小编典典

检索CLOB字段期间的DB2查询错误

sql

从Java,我在DB2上执行以下查询:

SELECT * FROM PRV_PRE_ACTIVATION WHERE TRANSACTION_ID = ?

该字段TRANSACTION_ID是一个VARCHAR长度32 I的使用设置的参数在preparedStatement时setString方法。

我得到了错误:

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应用程序服务器或两者的组合不支持功能”。但是我没有使用任何奇怪的功能。

我已经尝试使用squ客户端查询:

SELECT * FROM PRV_PRE_ACTIVATION where transaction_id='A'

一切顺利。

是什么原因引起的?

更新:准备语句的代码:

s = con.prepareStatement(sSQL,
                 ResultSet.TYPE_SCROLL_INSENSITIVE,
                 ResultSet.CONCUR_UPDATABLE);

阅读 358

收藏
2021-04-14

共1个答案

小编典典

尝试更改为选择列表中指定的列列表-我猜您是驱动程序不支持用户定义的列类型(或其他类型)。例如,该语句是否

SELECT TRANSACTION_ID FROM PRV_PRE_ACTIVATION WHERE TRANSACTION_ID = ?

工作?如果是这样,则开始在其中添加列,您将找到问题列。

2021-04-14