使用squirrel在sql中的DB2存储过程。无法循环

时间:2014-02-08 21:35:29

标签: sql loops stored-procedures db2 squirrel-sql

我无法使用%notfound,因为我收到以下错误。我怎么能超过这个?除了这种方法之外,我无法找到使用游标的方法。请帮助使用其他方法来使用游标循环而不使用%notfound。

  

“EXIT WHEN 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
@

感谢您提前提供任何帮助......

1 个答案:

答案 0 :(得分: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;