WHENEVER SQLERROR CLPPlus コマンド
WHENEVER SQLERROR CLPPlus コマンドでは、SQL または PL/SQL で SQL エラーが発生した場合に CLPPlus アクションを実行するように指定します。このコマンドを使用すると、エラーをトラップし、EXIT や CONTINUE などの指定のアクションを実行して、CLPPlus 動作を制御できます。
呼び出し
このコマンドは CLPPlus インターフェースから実行する必要があります。
許可
なし
必要な接続
なし
コマンド構文
コマンド・パラメーター
- 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
