在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操作會導致所有的游標被關閉)