>>--EXEC SQL---WHENEVER---.-NOT FOUND--.-----------------> +-SQLERROR---+ +-SQLWARNING-+ >--.-CONTINUE--------.----END-EXEC--->< +-PERFORM label---+ +-GOTO stmt_label-+
次に WHENEVER 文の使用例を示します。
EXEC SQL WHENEVER sqlerror PERFORM errormessage1 END-EXEC EXEC SQL DELETE FROM staff WHERE staff_id = 'hello' END-EXEC EXEC SQL DELETE FROM students WHERE student_id = 'hello' END-EXEC EXEC SQL WHENEVER sqlerror CONTINUE END-EXEC EXEC SQL INSERT INTO staff VALUES ('hello') END-EXEC DISPLAY 'Sql Code is: ' SQLCODE EXEC SQL WHENEVER sqlerror PERFORM errormessage2 END-EXEC EXEC SQL INSERT INTO staff VALUES ('hello again') END-EXEC STOP RUN. errormessage1 SECTION. display "SQL DELETE error: " sqlcode EXIT. errormessage2 SECTION. display "SQL INSERT error: " sqlcode EXIT.
説明:
WHENEVER 文は、NOT FOUND、SQLERROR、および SQLWARNING の各条件に応じて埋め込み SQL 文を実行した後のデフォルトのアクションを指定します。
WHENEVER 文の範囲は、実行順序ではなく、ソース プログラム内の文の位置に関連します。デフォルトは、3 つの条件すべてに対して CONTINUE です。