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

转载于:https://www.cnblogs.com/OliverQin/p/6632840.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值