3

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

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

它发生了 DB2 SQL 错误:

SQLCODE=-514,SQLSTATE=26501,SQLERRMC=SQL_CURSH200C1,驱动程序=3.64.104。

更何况这个问题不是每次都出来,有时候可以查询成功。

谁能告诉我问题的原因,非常感谢!

PS:DB2版本是9.5

4

2 回答 2

2

这是DB2 错误代码的链接,因此您可以自己查找下一个错误。

DB2 认为您的选择正在使用游标。尝试

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

看看错误是否消失。

这是 IBM DB2 错误代码手册中对错误的完整解释。

-514

CURSOR 游标名称未处于准备状态

解释

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

  1. 从来没有准备好。
  2. 因提交或回滚操作而失效

系统动作

无法处理该语句。程序员响应

对于情况 1,请确保在尝试打开游标之前准备好在 DECLARE CURSOR 语句中为 'cursor-name' 命名的语句。

对于情况 2,请执行以下操作之一:

  • 使用 DECLARE CURSOR 的 WITH HOLD 选项。
  • 在完成使用游标之前,不要执行提交或回滚操作。
  • 在提交或回滚之后再次准备语句。
于 2013-07-30T16:07:06.353 回答
0

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

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

于 2015-02-18T17:56:20.117 回答