>>--EXEC SQL---WHENEVER---.-NOT FOUND--.-----------------> +-SQLERROR---+ +-SQLWARNING-+ >--.-CONTINUE--------.----END-EXEC--->< +-PERFORM label---+ +-GOTO stmt_label-+
CONTINUE | ソースプログラムの次の文を実行します。 |
PERFORM label | 特定のエラーレベルが検出されたときに実行されるコードの段落または節を指定します。 |
GOTO stmt_label | 特定のエラーレベルが検出されたときに制御するプログラムの場所を指定します。 |
WHENEVER 文では、NOT FOUND、SQLERROR、SQLWARNING の各条件に応じて埋め込み SQL 文を実行した後のデフォルトのアクションを指定します。
条件 | sqlcode |
---|---|
エラーなし | 0 |
NOT FOUND | 100 |
SQLWARNING | +1 |
SQLERROR | < 0 (負の値) |
WHENEVER 文の範囲は、実行順序ではなく、ソースプログラム内の文の位置に関連します。 デフォルトは、3 つの条件すべてに対して CONTINUE です。
The following example shows the WHENEVER statement in use:
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.