同じ行に複数の呼び出しがあるクエリがあります (以下のコードを参照)
Statement オブジェクトは、JDBCTemplate によって自動的に作成されます。
JDBCTemplate は new JDBCTemplate() としてインスタンス化され、データソースは weblogic サーバー プールから検索されます。
クラス A は org.springframework.jdbc.core.StatementCallback を実装します {
public Object doInStatement(Statement stmt) throws Exception {
String sql = "select * from a where pk = 'test';select * from b where pk = 'test';select * from c where pk = 'test'";
Statement stmt =
ResultSet rs = stmt.executeQuery(sql);
rs = stmt.getResultSet();
...
rs = stmt.getMoreResults();
...
rs = stmt.getMoreResults();
...
}
IBM の Type 2 ドライバーを使用すると、上記は問題なく動作しました。ドライバーを Oracle の Type 4 JDBC ドライバーに変更する必要があり、それを行ったところ、上記が壊れました。もう機能しません。以下のエラーが表示されます。
[DAO.exec] エラー: java.sql.SQLException: [OWLS][DB2 JDBC ドライバー][DB2]ILLEGAL SYMBOL select * from a where pk ; 有効なシンボルはステートメントの始まりです
Type 4ドライバーが上記をサポートしない理由を知っている人はいますか? ステートメントで使用する必要がある別の区切り文字、それを機能させる別の方法はありますか?
注: このコードは、IBM タイプ 2 JDBC ドライバーでは問題なく動作しましたが、Oracle のタイプ 4 ドライバーに切り替えたときに失敗しました。
アプリケーション サーバーと DB2 データベースとして weblogic を使用します。