WHENEVER SQLERROR CLPPlus コマンド

WHENEVER SQLERROR CLPPlus コマンドでは、SQL または PL/SQL で SQL エラーが発生した場合に CLPPlus アクションを実行するように指定します。このコマンドを使用すると、エラーをトラップし、EXITCONTINUE などの指定のアクションを実行して、CLPPlus 動作を制御できます。

呼び出し

このコマンドは CLPPlus インターフェースから実行する必要があります。

許可

なし

必要な接続

なし

コマンド構文

構文図を読む構文図をスキップするWHENEVER SQLERROR CONTINUENONECOMMITROLLBACKEXITSUCCESSFAILUREWARNINGvaluevariable:bindvariableCOMMITROLLBACK

コマンド・パラメーター

CONTINUE
SQL または PL/SQL エラーが発生した場合に、CLPPlus が指定のアクションを実行して続行するように指示します。
NONE
WHENEVER SQLERROR CONTINUE コマンドで使用されるデフォルト値です。 エラーが発生した SQL ブロックで何もアクションを実行しません。
COMMIT
WHENEVER SQLERROR CONTINUE コマンドで COMMIT を指定すると、現在の SQL ブロックで実行された、可能なすべての作業がコミットされます。
ROLLBACK
WHENEVER SQLERROR CONTINUE コマンドで ROLLBACK を指定すると、現在の SQL ブロック内のすべての作業がロールバックされます。
EXIT
SQL または PL/SQL エラーが発生した場合に、CLPPlus が終了するように指定します。 このオプションの機能は、単体の EXIT コマンドと同じです。
SUCCESS
成功を示すオペレーティング・システム依存の戻りコードを戻します。 これは、1 番目のデフォルトの EXIT パラメーターです。
FAILURE
失敗を示すオペレーティング・システム依存の戻りコードを戻します。
WARNING
警告を示すオペレーティング・システム依存の戻りコードを戻します。
value
値が戻りコードとして戻される、DEFINE コマンドで作成される変数を指定します。
variable
値が戻りコードとして戻される、DEFINE コマンドで作成される置換変数値を指定します。
:bindvariable
値が戻りコードとして戻される、DEFINE コマンドで作成されるバインド変数値を指定します。
COMMIT
コミットされていない更新が CLPPlus セッションの終了時にコミットされます。 これは、2 番目のデフォルトの EXIT パラメーターです。
ROLLBACK
コミットされていない更新が CLPPlus セッションの終了時にロールバックされます。

以下の例は、WHENEVER SQLERROR CONTINUE コマンドの動作を示しています。 CLPPlus プロンプトに戻り、CLPPlus を引き続き使用できます。

SQL> whenever sqlerror continue
SQL> select * from nonexistingtable;
SQL0204N "SCHEMA.NONEXISTINGTABLE" is an undefined name.
SQL>

SQL エラーが発生する場合、アクションをコミットするか、ロールバックするか、アクションをとらないことも可能です。

SQL> whenever sqlerror continue commit 
SQL>
SQL> whenever sqlerror continue rollback
SQL>
SQL> whenever sqlerror continue none
SQL>

以下の例では、EXIT オプションを使用して CLPPlus アプリケーションを終了します。

SQL> whenever sqlerror exit
SQL> select * from nonexistingtable;
SQL0204N "SCHEMA.NONEXISTINGTABLE" is an undefined name.

C:\>

以下の場合、終了時に戻されるエラー・コードが指定されます。 この動作は、EXIT CLPPlus コマンドと同じです。

SQL> whenever sqlerror exit success
SQL> whenever sqlerror exit failure
SQL> select * from nonexistingtable;
SQL0204N "SCHEMA.NONEXISTINGTABLE" is an undefined name.

C:¥echo %errorlevel%
1

SQL> define exit_value=6
SQL> whenever sqlerror exit exit_value
SQL> select * from nonexistingtable;
SQL0204N "SCHEMA.NONEXISTINGTABLE" is an undefined name.

C:¥echo %errorlevel%
6

EXIT CLPPlus コマンドと同様、CLPPlus アプリケーション終了の間に、コミットするのか、ロールバックするのかを指定できます。

SQL> whenever sqlerror exit 2 commit

SQL> whenever sqlerror exit 2 rollback