http://www.shift-the-oracle.com/plsql/exception/predefined-exception.html
PL/SQL 事前定義例外一覧
PL/SQL にはエラーハンドリング用に以下の必要最低限な例外だけが定義されている。これらは SYS.STANDARD パッケージ に定義されている内容である。一見すると例外の数が非常に少ないが、この程度の例外といくつかのユーザ定義例外だけで結構組みあげることができてしまう。
その中でも、主に使うのは DUP_VAL_ON_INDEX、NO_DATA_FOUND、TIMEOUT_ON_RESOURCE、OTHERS に集中すると思う。
もちろん、これ以外にも多くのストアドパッケージに固有の例外が定義されているので、それを使うこともある。特にファイル I/O などのパッケージを使用する場合には例外処理(ファイナル処理)を必ず行ない、ファイルをオープンしたままにはしないなどの配慮を行なう。例外名称、エラーコード、SQLCODE 一覧表
例外名 ORA-XXXXX SQLCODE ACCESS_INTO_NULL ORA-06530 -6530 CASE_NOT_FOUND ORA-06592 -6592 COLLECTION_IS_NULL ORA-06531 -6531 CURSOR_ALREADY_OPEN ORA-06511 -6511 DUP_VAL_ON_INDEX ORA-00001 -1 INVALID_CURSOR ORA-01001 -1001 INVALID_NUMBER ORA-01722 -1722 LOGIN_DENIED ORA-01017 -1017 NO_DATA_FOUND ORA-01403 100 NO_DATA_NEEDED ORA-06548 -6548 NOT_LOGGED_ON ORA-01012 -1012 PROGRAM_ERROR ORA-06501 -6501 ROWTYPE_MISMATCH ORA-06504 -6504 SELF_IS_NULL ORA-30625 -30625 SUBSCRIPT_BEYOND_COUNT ORA-06533 -6533 SUBSCRIPT_OUTSIDE_LIMIT ORA-06532 -6532 SYS_INVALID_ROWID ORA-01410 -1410 STORAGE_ERROR ORA-06500 -6500 TIMEOUT_ON_RESOURCE ORA-00051 -51 TOO_MANY_ROWS ORA-01422 -1422 USERENV_COMMITSCN_ERROR ORA-1725 -1725 TRANSACTION_BACKED_OUT ORA-00061 -61 VALUE_ERROR ORA-06502 -6502 ZERO_DIVIDE ORA-01476 -1476 OTHERS - - COLLECTION_IS_NULL
- アトミック・ヌル のコレクションに対して操作を行なった場合
コンストラクタを呼び出してコレクションを初期化する。INVALID_CURSOR
- オープンしていない カーソル に操作している、以下の IF 処理を参考に
IF cursor_name%ISOPEN THEN ~INVALID_NUMBER
- 数値に変換できない。SELECT DECODE(num_date, 1, 'aaa') ~ などの数値項目に対して文字を変換すると発生したりする。( NVL 関数 でも同じ)
⇒ ORA-01722: 数値が無効です。USERENV_COMMITSCN_ERROR
- USERENV('COMMITSCN') を INSERT/UPDATE 以外で使用時に発生。
⇒ システム変更番号VALUE_ERROR
- 数値のオーバーフローや NOT NULL 制約に違反している。
参考: ORA-06502: PL/SQL: 数値または値のエラー: 文字列バッファが小さすぎます
PL/SQL 事前定義例外一覧
最新推荐文章于 2024-06-17 11:52:37 发布