DB2 SQL错误:SQLCODE = -514,SQLSTATE = 26501

时间:2013-07-30 15:38:28

标签: jdbc db2

当我使用JDBC执行如下的预准备语句时:

select count(1) from TableName where col1 = 9 and col2 = ?

它引发了DB2 SQL错误:

  

SQLCODE = -514,SQLSTATE = 26501,SQLERRMC = SQL_CURSH200C1,DRIVER = 3.64.104。

更重要的是,此问题并非每次都出现,有时它可以成功查询。

非常感谢有人告诉我这个问题的原因!

PS:DB2版本是9.5

2 个答案:

答案 0 :(得分:2)

以下是DB2 error codes的链接,因此您可以自行查找下一个错误。

DB2认为你的select正在使用游标。试试

select count(*) from TableName where col1 = 9 and col2 = ?

并查看错误是否消失。

以下是IBM DB2错误代码手册中错误的完整说明。

-514

CURSOR游标名称不在预备状态

说明

应用程序尝试使用未处于准备状态的游标“cursor-name”。游标与以下语句相关联:

  1. 从未准备好。
  2. 由提交或回滚操作无效
  3. 系统操作

    无法处理该声明。 程序员回应

    对于案例1,请确保在尝试打开游标之前准备在“游标名称”的DECLARE CURSOR语句中命名的语句。

    对于案例2,请执行以下操作之一:

    • 使用DECLARE CURSOR的WITH HOLD选项。
    • 在完成光标使用之前,不要执行提交或回滚操作。
    • 在提交或回滚后再次准备语句。

答案 1 :(得分:0)

如果在运行executeQuery()之前没有正确准备语句,则可能会发生此问题。如果您已正确准备好查询并且已正确设置值,请检查代码。

如果您无法收到错误,请放置用于准备语句的完整代码段并执行。