sql - 检索 CLOB 字段期间出现 DB2 查询错误

标签 sql database jdbc db2 clob

我在 Java 中对 DB2 执行以下查询:

SELECT * FROM PRV_PRE_ACTIVATION WHERE TRANSACTION_ID = ?

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

我尝试使用 sq 客户端查询:

SELECT * FROM PRV_PRE_ACTIVATION where transaction_id='A'

一切顺利。

问题的原因是什么?

更新:准备语句的代码:

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

最佳答案

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

SELECT TRANSACTION_ID FROM PRV_PRE_ACTIVATION WHERE TRANSACTION_ID = ?

工作?如果是这样,那么开始添加列,您就会找到问题列。

关于sql - 检索 CLOB 字段期间出现 DB2 查询错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12686832/

相关文章:

MySQL - 行到列

mysql - Cayenne "resets"主键值?

java - 玻璃鱼错误

java - 从 Java 访问存储过程的 %ROWTYPE

mongodb - 用于高效大规模图遍历的数据库

java - 用sql查找圆内的点

sql - 根据另一个数据库的查询结果查询一个数据库

sql - 如何将相同数据的多列合并为一列?

mysql - 在 Symfony 中根据日期和 count() 获取 mysql 结果

sql - Oracle PL/SQL 字符串格式化