トップページ >  SQL*Plus >  SQL、PL/SQLエラー時の対処
初版2005/06/14: 最終更新日2005/06/14
  SQL、PL/SQLエラー時の対処
SQL、PL/SQLエラー時の対処
SQL、PL/SQLエラーが発生した場合、そのエラーをきっかけに何かを行いたいというときがあります。
そういう場合はwhenever sqlerrorコマンドを使用します。
whenever sqlerrorコマンドは、通常SQLコマンドまたはPL/SQLブロックの前の行に書きます。
下記の例ように複数書いた場合、直前の行に書いたwhenever sqlerrorコマンドが有効となります。
ですので、update文でエラーが発生した場合、 whenever sqlerror continue commit が有効となり、実行されます。

whenever sqlerror continue rollback
whenever sqlerror continue commit
update ・・・
またこのコマンドは、SQLコマンドまたはPL/SQLブロックのエラーによってトリガーされますので、正常にSQLコマンドまたはPL/SQLブロックが実行された場合はwhenever sqlerrorコマンドは実行されません。
また同様に、SQL*Plusコマンドのエラーでもトリガーされません。

whenever sqlerror

と入力するとこのコマンドの使用方法が表示されます。
whenever sqlerror continue

と入力するとSQLコマンドまたはPL/SQLブロックのエラーが発生した場合、そのまま次のコマンドへと継続されます。

whenever sqlerror continue none

は、 whenever sqlerror continue と同じです。

whenever sqlerror continue commit

と入力するとSQLコマンドまたはPL/SQLブロックのエラーが発生した場合、commitを実行してから次のコマンドへと継続されます。 whenever sqlerror continue rollback

と入力するとSQLコマンドまたはPL/SQLブロックのエラーが発生した場合、rollbackを実行してから次のコマンドへと継続されます。
以上のコマンドは全て継続するコマンドです。

逆にSQLコマンドまたはPL/SQLブロックのエラーが発生した場合、そこで終了したい場合があります。
そういう場合は

whenever sqlerror exit

と入力するとSQLコマンドまたはPL/SQLブロックのエラーが発生した場合、その時点でSQL*Plusを終了します。
終了するときにリターンコードを指定してSQL*Plusを終了することもできます。
この指定方法はwhenever oserrorと同じですので詳しくはこちらをご覧ください。

Information
リンクについて
個人情報保護方針
Yahoo!ブックマークに登録

社長&社員ブログ
やる気はあるがお金がない㈱コンフレッジブログ

slot大好きな㈱コンフレッジ社員のブログ
広告

サイト内検索
当サイト内を検索できます↓


PV