【DB2】SQL0501N FETCH 语句或 CLOSE 语句中指定的游标尚未打开,或者游标标量函数引用中的游标变量尚未打开。 SQLSTATE=24501
在DB2中建立存储过程时使用了隐式游标,在调用的时候报错如下:
SQL0501N FETCH 语句或 CLOSE 语句中指定的游标尚未打开,或者游标标量函数引用中的游标变量尚未打开。 SQLSTATE=24501
相关环境
------表 CREATE TABLE GH(ID VARCHAR(100)); ----存储过程 CREATE PROCEDURE UP_GET_ALL BEGIN FOR V1 AS cursor1 CURSOR for SELECT DISTINCT ID FROM t_m DO INSERT INTO GH VALUES(V1.ID); COMMIT; END FOR ; end;
在执行过程中,存储过程编译没问题,但是调用后出现问题了。
解决办法
将存储过程中的COMMIT放到END FOR后边即可。
问题分析:在嵌套的存储过程中也没有COMMIT操作(任何一个commit操作会导致所有的游标被关闭)
作者:奔跑的金鱼
声明:书写博客不易,转载请注明出处,请支持原创,侵权将追究法律责任
个性签名:人的一切的痛苦,本质上都是对自己无能的愤怒
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!