WHENEVER ステートメントは、 指定した例外条件が発生した時点で実行するアクションを指定します。
呼び出し
このステートメントは、アプリケーション・プログラムに組み込む方法のみ可能です。 これは、実行可能ステートメントではありません。 このステートメントは REXX ではサポートされません。
許可
権限は不要です。
構文
>>-WHENEVER----+-NOT FOUND--+-----------------------------------> +-SQLERROR---+ '-SQLWARNING-' >-----+-CONTINUE--------------------------+-------------------->< '--+-GOTO--+---+----+---host-label--' '-GO TO-' '-:--'
説明
NOT FOUND、SQLERROR、または SQLWARNING の各文節は、 例外条件のタイプの指定に使用されます。
CONTINUE または GO TO の各文節は、 指定したタイプの例外条件が生じた場合に行うアクションを指定します。
注
WHENEVER ステートメントには、以下の 3 つのタイプがあります。
プログラムの実行可能な SQL ステートメントはいずれも、 各タイプの暗黙のまたは明示的な WHENEVER ステートメントの効力範囲内にあります。 WHENEVER ステートメントの効力範囲は、プログラムのステートメントの実行順序ではなく、 ステートメントのリスト順序に関連しています。
SQL ステートメントは、 ソース・プログラムでその SQL ステートメントよりも前に指定されている各タイプの最後の WHENEVER ステートメントの効力範囲内にあります。 いずれかのタイプの WHENEVER ステートメントが SQL ステートメントよりも前に指定されていない場合、 その SQL ステートメントは、CONTINUE が指定されたそのタイプの暗黙の WHENEVER ステートメントの効力範囲内にあります。
例
次の C の例では、エラーが発生した場合に HANDLERR へ進みます。 警告コードを生成された場合は、プログラムの通常フローを続行します。 データが戻されない場合には、ENDDATA に進みます。
EXEC SQL WHENEVER SQLERROR GOTO HANDLERR; EXEC SQL WHENEVER SQLWARNING CONTINUE; EXEC SQL WHENEVER NOT FOUND GO TO ENDDATA;