【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操作会导致所有的游标被关闭)


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM