Db2 SQLCODE=-501,SQLSTATE=24501,带游标
我写了一个程序。我得到下面的错误。 有人能帮我吗Db2 SQLCODE=-501,SQLSTATE=24501,带游标,db2,Db2,我写了一个程序。我得到下面的错误。 有人能帮我吗 Create procedure p1() declare cur1 cursor WITH HOLD for STMT1; DECLARE CONTINUE HANDLER FOR SQLSTATE '24501' BEGIN OPEN index_list ; set exitcode = 1; END ; set TEXT =(); PREPARE STMT1 FROM TEXT; OPEN cur1 ; FE
Create procedure p1()
declare cur1 cursor WITH HOLD for STMT1;
DECLARE CONTINUE HANDLER FOR SQLSTATE '24501'
BEGIN
OPEN index_list ;
set exitcode = 1;
END ;
set TEXT =();
PREPARE STMT1 FROM TEXT;
OPEN cur1 ;
FETCH FROM cur1 INTO VAR2,
VAR1 ;
WHILE (SQLCODE = 0)
DO
EXECUTE IMMEDIATE 'SET PASSTHRU SAMPLE' ;
----
-----
EXECUTE IMMEDIATE 'SET PASSTHRU RESET' ;
FETCH FROM cur1 INTO VAR2,
VAR1 ;
END WHILE;
这是我的代码大纲。我的问题是在“SET PASSTHRU RESET”之后,游标被关闭&第二次获取失败,出现以下错误。甚至我指定了curos a with HOLD选项
错误:
FETCH语句或CLOSE语句中指定的游标未打开,或者游标标量函数引用中的游标变量未打开。。SQLCODE=-501,SQLSTATE=24501,DRIVER=4.17.30
例行程序的运行失败
有人能告诉我我要补充什么吗。
我是db2的新手&从未遇到过这种情况。这就是我问专家的原因 这里有很多问题1)如果您准备的是最终在游标中使用的语句,则在
声明游标之前调用PREPARE
(不过您可以声明游标)。2) 您将光标声明为cur1
,但从index\u list
获取,因此您收到的消息并不令人惊讶。3) 该声明可能仍然会成功。。。。。。。4) 光标的使用意味着您将对此进行RBAR(一行接一行)。你真的想分块完成,或者一批完成。假设DB2有一些实用程序可以在不同的服务器中查询表,甚至可以在不同的RDBMS中查询表,但我从来没有设置它们,因为这不是我的原始代码。但我找到了解决方案,我将其作为异常处理&我在该异常中声明了exit code=1&它现在正在工作。我可以运行我的记录。谢谢你的支持。添加到问题中