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

whenever oserror continue rollback
whenever oserror continue commit
@test
またこのコマンドは、OSのエラーによってトリガーされますので、正常にSQL*Plusコマンドが実行された場合はwhenever oserrorコマンドは実行されません。

whenever oserror

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

と入力するとOSのエラーが発生した場合、そのまま次のコマンドへと継続されます。

whenever oserror continue none

は、 whenever oserror continue と同じです。

whenever oserror continue commit

と入力するとOSのエラーが発生した場合、commitを実行してから次のコマンドへと継続されます。 whenever oserror continue rollback

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

逆にOSのエラーが発生した場合、そこで終了したい場合があります。
そういう場合は

whenever oserror exit

と入力するとSQLコマンドまたはPL/SQLブロックのエラーが発生した場合、その時点でSQL*Plusを終了します。
終了するときにリターンコードを指定してSQL*Plusを終了することもできます。
whenever oserror exit success

は、 whenever oserror exit と同じです。

whenever oserror exit failure

whenever oserror exit warning

whenever oserror exit リターンコード

whenever oserror exit システム変数

以上のコマンドは全てSQL*Plusを終了するコマンドです。最後にcommitもしくはrollbackを指定するとcommitもしくはrollbackをしてからSQL*Plusを終了します。
commitもしくはrollbackが指定されていない場合はデフォルトではcommitされます。