I want to make a condition on Cursor like in Oracle (IF cur%NOTFOUND THEN ..). I tried using this code in DB2 :
CREATE OR REPLACE PROCEDURE PROC_SAMPLE1()
BEGIN ATOMIC
DECLARE V_DESCRIPTION_1 VARCHAR(4000);
DECLARE V_DESCRIPTION_2 VARCHAR(4000);
DECLARE sys cursor FOR select DESCRIPTION_1, DESCRIPTION_2 from DESC;
open sys;
TEST:
LOOP
IF (sys IS NOT FOUND) THEN // **error in this line**
LEAVE TEST;
END IF;
fetch FROM sys INTO V_DESCRIPTION_1,V_DESCRIPTION_2;
-- other treatments
END IF;
END LOOP TEST;
close sys;
END;
I got this error :
SQL0206N "SYS" is not valid in the context where it is used. LINE NUMBER=15.
SQLSTATE=42703
I replaced the cursor by a Select statement and my problem is solved :
CREATE OR REPLACE PROCEDURE PROC_SAMPLE1()
BEGIN ATOMIC
DECLARE V_DESCRIPTION_1 VARCHAR(4000);
DECLARE V_DESCRIPTION_2 VARCHAR(4000);
FOR v_row AS select DESCRIPTION_1, DESCRIPTION_2 from DESC DO
-- other treatments
END FOR;
END;