2014-02-08 47 views
2

我無法使用%notfound,因爲出現以下錯誤。我怎麼能通過這個?除了這種方法之外,我無法找出使用遊標的方法。請幫助其他方法使用遊標循環,而不使用%notfound。使用松鼠sql中的DB2存儲過程。無法循環

字符 「%」 下面的 「出關時c_rqstid」 無效.. SQLCODE = -7,SQLSTATE = 42601,DRIVER = 3.63.123 SQL代碼:-7,SQL狀態:42601

我已經設置@作爲分隔符和代碼如下

create PROCEDURE TEST111() 
AS: 
begin 
DECLARE c_id integer; 
DECLARE c_isactive integer; 
DECLARE c_status integer; 
CURSOR c_rqstid is SELECT REQUESTID,REQUESTSTATUS,ISACTIVE FROM SAMPLE.REQUEST; 
OPEN c_rqstid; 
    FOR LOOP FETCH c_rqstid into c_id,c_status,c_isactive ; 
    ----will code this later 
    EXIT WHEN c_rqstid%NOTFOUND; 
    END LOOP; 
CLOSE c_rqstid; 
end 
@ 

感謝提前任何幫助......

+0

歡迎SO。好問題,格式良好。祝你好運! – Jess

+0

運行於您的DB2服務器上的操作系統是什麼類型:IBM i(fka OS/400),LUW(Linux,Unix,Windows)還是z/OS?什麼版本? – WarrenT

+0

@WarrenT它在Windows和10.5上 – Sherri

回答

2

你需要檢查SQLCODE或SQLSTATE變量:

http://pic.dhe.ibm.com/infocenter/db2luw/v10r1/topic/com.ibm.db2.luw.apdv.sqlpl.doc/doc/c0009028.html

DECLARE SQLCODE INTEGER DEFAULT 0; 
DECLARE SQLSTATE CHAR(5) DEFAULT '00000'; 

WHILE(SQLSTATE = '00000') DO 
    SET p_sum = p_sum + p_sal; 
    FETCH FROM c INTO p_sal; 
END WHILE; 
+0

似乎Sherri正在嘗試使用PL/SQL兼容性,呃? – WarrenT

+1

http://pic.dhe.ibm.com/infocenter/db2luw/v10r5/index.jsp?topic=%2Fcom.ibm.db2.luw.sql.ref.doc%2Fdoc%2Fr0000751.html顯示了一個使用%未找到。 – WarrenT

+0

@Charles我試過,但SQLSTATE不會改變,我最終在一個無限循環。我錯過了什麼? – Sherri