Javaから、DB2で次のクエリを実行しています。
SELECT * FROM PRV_PRE_ACTIVATION WHERE TRANSACTION_ID = ?
フィールドTRANSACTION_ID
のVARCHAR
長さは32ですsetString
。メソッドを使用してpreparedStatementにパラメーターを設定しました。
エラーが発生します:
com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-270, SQLSTATE=42997, SQLERRMC=63, DRIVER=3.59.81
at com.ibm.db2.jcc.am.dd.a(dd.java:676)
at com.ibm.db2.jcc.am.dd.a(dd.java:60)
at com.ibm.db2.jcc.am.dd.a(dd.java:127)
at com.ibm.db2.jcc.am.bn.c(bn.java:2546)
at com.ibm.db2.jcc.am.bn.d(bn.java:2534)
at com.ibm.db2.jcc.am.bn.a(bn.java:2026)
at com.ibm.db2.jcc.t4.cb.g(cb.java:140)
at com.ibm.db2.jcc.t4.cb.a(cb.java:40)
at com.ibm.db2.jcc.t4.q.a(q.java:32)
at com.ibm.db2.jcc.t4.rb.i(rb.java:135)
at com.ibm.db2.jcc.am.bn.gb(bn.java:1997)
at com.ibm.db2.jcc.am.cn.pc(cn.java:3009)
at com.ibm.db2.jcc.am.cn.b(cn.java:3786)
at com.ibm.db2.jcc.am.cn.bc(cn.java:678)
at com.ibm.db2.jcc.am.cn.executeQuery(cn.java:652)
sqstateが「機能は、このバージョンのDB2アプリケーション・リクエスター、DB2アプリケーション・サーバー、またはその2つの組み合わせではサポートされていない」という意味の場合。しかし、私は奇妙な機能を使用していません。
私はsquクライアントを使用してクエリを試しました:
SELECT * FROM PRV_PRE_ACTIVATION where transaction_id='A'
そして、それは大丈夫です。
問題の原因は何ですか?
更新:ステートメントが準備されるコード:
s = con.prepareStatement(sSQL,
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);