2016-07-28 8 views
0

DB2 10.1 WindowsでJDBCを使用して複数ステートメントクエリを実行しようとしていますが、構文エラーで失敗します。予期しないトークン「」「次発見された」次のスレッド「メイン」com.ibm.db2.jcc.am.SqlSyntaxErrorExceptionでquery-DB2ウィンドウでJDBCを使用して複数ステートメントクエリを実行する

SELECT * FROM schemaname.tablename; 

例外があります。予想されるトークンが含まれる:「SCHEMANAME.TABLENAME」.. SQLCODE = -104、SQLSTATE = 42601、DRIVER = 4.13.127

私はこれがどのクエリの最後にセミコロンに起因してくることを理解しますデータベースによって理解されていません。クエリセパレータをセミコロンとして設定するにはどうすればよいのでしょうか。

+0

あなたが話しているこの "マルチステートメントクエリ"とは何ですか?エラーの原因となるコードの一部を表示することができますか? – mustaccio

+0

基本的には、SELECT * FROM schemaname.tablename1; SELECT * FROM schemaname.tablename2;という形式です。 2つのクエリがセミコロンで区切られています。しかし、私の要求はそれだけではありません。セミコロンで終了するクエリを実行する必要があります。そのようにコード化されていて、DB2 for z/OSでうまく動作すれば、DB2 for Windowsで同じことを実行する必要があります。私は、クエリを変更するオプションがありません。 – User2709

+1

これらのいずれも可能ではありません。 [複合ステートメント](http://www.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.apdv.sqlpl.doc/)を使用しない限り、一度に1つのステートメントしか発行できません。 doc/c0053781.html)、ターミネータは使用しないでください(ターミネータはSQL構文の一部ではありません)。 – mustaccio

答えて

0

JDBCでは、一度に1つのステートメントを実行します。 DB2はそれをサポートしていません。ドライバ/データベースによってはこれを回避する方法がありますが、それは非標準です。

したがって、2つのステートメントを一度に実行するのではなく、順番に実行する必要があります。

+0

これはDB2 for z/OSでも動作するというだけの奇妙さですが、Windows版の情報はあまり見つかりませんでした。 – User2709

+0

@ User2709私が知る限り、「DB2」は1つもなく、DB2と呼ばれる複数のバリアントがあり、機能とサポートはプラットフォームとバリアントによって異なります。 –