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