寝て起きて寝て

プログラミングが出来ない情報系のブログ

PL/SQLの例外名 一覧

PL/SQLでEXCEPTIONの処理に例外名を指定してやると対応した例外が出たときに 個別で処理できるので便利。また、RAISE文を使用し明示的に呼び出すことも可能

ただどのエラーがどの例外名になってるかよくわからなかったのでまとめる

例外 ORAエラー SQLCODE 内容
ACCESS_INTO_NULL 06530 -6530 プログラムが未初期化オブジェクトの属性に値を代入しようとしたとき
CASE_NOT_FOUND 06592 -6592 CASE文のWHEN句で何も選択されておらず、ELSE句もない場合
COLLECTION_IS_NULL 06531 -6531 アトミック・ヌル のコレクションに対して操作を行なった場合
CURSOR_ALREADY_OPEN 06511 -6511 すでにオープンされているカーソルをオープンしようとしたとき
DUP_VAL_ON_INDEX 00001 -1 UNIQUE索引によって制約されている列に、重複した値を格納しようとしたとき
INVALID_CURSOR 01001 -1001 オープンされていないカーソルをクローズするなど、不正なカーソル操作を実行しようとしたとき
INVALID_NUMBER 01722 -1722 文字列から数値型へ変換が失敗したとき
LOGIN_DENIED 01017 -1017 不正なユーザー名またはパスワードでOracleにログオンしようとしたとき
NO_DATA_FOUND 01403 +100 SELECT文などで該当データが見つからなかったとき。
NOT_LOGGED_ON 01012 -1012 接続が切断された場合。(接続中の場合には、サーバーのアラートログやクライアントの SQLNET.LOG を参照)
PROGRAM_ERROR 06501 -6501 PL/SQLに内部的な問題が発生した場合
ROWTYPE_MISMATCH 06504 -6504 ホスト・カーソル変数とPL/SQLカーソル変数の戻り型に互換性がない場合
SELF_IS_NULL 30625 -30625 オブジェクト型のインスタンスが初期化されていなかった場合。つまり、組込みパラメータSELFがオブジェクトを指している場合。
STORAGE_ERROR 06500 -6500 PL/SQLのメモリーが足りない場合、またはメモリーが破壊されている場合
SUBSCRIPT_BEYOND_COUNT 06533 -6533 コレクション中の要素数より大きい索引番号を参照した場合
SUBSCRIPT_OUTSIDE_LIMIT 06532 -6532 有効範囲外(たとえば-1)の索引番号を使用してネストした表またはVARRAYの要素を参照した場合
SYS_INVALID_ROWID 01410 -1410 文字列が正しいROWIDを表していなかったために、文字列からユニバーサルROWIDへの変換が失敗した場合
TIMEOUT_ON_RESOURCE 00051 -51 Oracleがリソースを求めて待機しているときにタイムアウトが発生した場合
TOO_MANY_ROWS 01422 -1422 SELECT INTO文が複数の行を戻した場合
VALUE_ERROR 06502 -6502 数値のオーバーフローや NOT NULL 制約に違反している。
ZERO_DIVIDE 01476 -14 数値を0(ゼロ)で割ろうとしたとき。
OTHERS - - 明示されているエラー以外をCHATCH

エラーハンドリング用に定義されているもの。 必要最低限の例外だけ定義されている。 このほかに定義したい場合はユーザー定義で個別に設定する。

参考URL

PL/SQLエラーの処理

事前定義例外 - オラクル・Oracleをマスターするための基本と仕組み