当我使用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
答案 0 :(得分:2)
以下是DB2 error codes的链接,因此您可以自行查找下一个错误。
DB2认为你的select正在使用游标。试试
select count(*) from TableName where col1 = 9 and col2 = ?
并查看错误是否消失。
以下是IBM DB2错误代码手册中错误的完整说明。
-514
CURSOR游标名称不在预备状态
应用程序尝试使用未处于准备状态的游标“cursor-name”。游标与以下语句相关联:
无法处理该声明。 程序员回应
对于案例1,请确保在尝试打开游标之前准备在“游标名称”的DECLARE CURSOR语句中命名的语句。
对于案例2,请执行以下操作之一:
答案 1 :(得分:0)
如果在运行executeQuery()之前没有正确准备语句,则可能会发生此问题。如果您已正确准备好查询并且已正确设置值,请检查代码。
如果您无法收到错误,请放置用于准备语句的完整代码段并执行。