【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