Oracle PL/SQL 例外の種類 内部例外について

スポンサーリンク
スポンサーリンク

PL/SQL 例外の種類について

PL/SQLの例外には、Oracleが事前に定義している例外の「内部例外」とユーザが定義する「ユーザ定義例外」に分類することができます。

内部例外について

内部例外には以下の例外が用意されています。
Oracleのバージョンによっては変わるかもなので詳しくはリファレンスを参照してください。

Oracleの内部例外
例外名 ORAエラー SQLCODE 内容
ACCESS_INTO_NULL 06530 -6530 プログラムが未初期化オブジェクトの属性に値を代入しようとしたとき。
CASE_NOT_FOUND 06592 -6592 CASE文のWHEN句で何も選択されておらず、ELSE句もない場合。
COLLECTION_IS_NULL 06531 -6531 プログラムがEXISTS以外のコレクション・メソッドを未初期化のネストした表またはVARRAYに適用しようとしたか、または未初期化のネストした表またはVARRAYの要素に値を代入しようとしたとき。
CURSOR_ALREADY_OPEN 06511 -6511 すでにオープンされているカーソルをオープンしようとしたとき。 カーソルをオープンするには、一度クローズする必要があります。 カーソルFORループは、参照するカーソルを自動的にオープンします。このため、ループの内側ではカーソルをオープンできません。
DUP_VAL_ON_INDEX 00001 -1 UNIQUE索引によって制約されている列に、重複した値を格納しようとしたとき。
INVALID_CURSOR 01001 -1001 オープンされていないカーソルをクローズするなど、不正なカーソル操作を実行しようとしたとき。
INVALID_NUMBER 01722 -1722 SQL文の中で、文字列が正しい数値を表していなかったために、文字列から数値への変換が失敗したとき。 (プロシージャ文では、VALUE_ERRORが呼び出されます。) この例外は、バルクFETCH文のLIMIT句の式が正数に評価されない場合にも呼び出されます。
LOGIN_DENIED 01017 -1017 不正なユーザー名またはパスワードでデータベースにログオンしようとした場合。
NO_DATA_FOUND 01403 100 この例外は、いくつかのSQLファンクションで終了したことを通知するために内部的に使用されているため、問合せの一部として起動されるファンクション内部で呼び出された場合は、この例外が伝播されても信頼しないでください。
NOT_LOGGED_ON 01012 -1012 データベースに接続していないプログラムが、データベース・コールを発行した場合。
PROGRAM_ERROR 06501 -6501 PL/SQLに内部的な問題が発生した場合。
ROWTYPE_MISMATCH 06504 -6504 含まれるホスト・カーソル変数とPL/SQLカーソル変数の戻り型に互換性がない場合。 オープン・ホスト・カーソル変数をストアド・サブプログラムに渡すとき、実パラメータの戻り型と仮パラメータの戻り型には互換性が必要です。
SELF_IS_NULL 30625 -30625 プログラムがMEMBERメソッドの起動を試行したが、オブジェクト型のインスタンスが初期化されなかった場合。 つまり、組込みパラメータSELFがオブジェクトを指している場合です。このパラメータは、常にMEMBERメソッドに最初に渡されるパラメータです。
STORAGE_ERROR 06500 -6500 PL/SQLのメモリーが足りなくなった場合、またはメモリーが破損された場合。
SUBSCRIPT_BEYOND_COUNT 06533 -6533 コレクション中の要素数より大きい索引番号を使用してネストした表またはVARRAYの要素を参照した場合。
SUBSCRIPT_OUTSIDE_LIMIT 06532 -6532 有効範囲外(たとえば-1)の索引番号を使用してネストした表またはVARRAYの要素を参照した場合。
SYS_INVALID_ROWID 01410 -1410 文字列が正しいROWIDを表していなかったために、文字列からユニバーサルROWIDへの変換が失敗した場合。
TIMEOUT_ON_RESOURCE 00051 -51 データベースがリソースを求めて待機しているときにタイムアウトが発生した場合。
TOO_MANY_ROWS 01422 -1422 SELECT INTO文が複数の行を戻した場合。
VALUE_ERROR 06502 -6502 列値を選択し文字変数に代入するときに、その値が変数の宣言された長さよりも長い場合、PL/SQLはその代入を停止してVALUE_ERRORを呼び出します。 プロシージャ文では、文字列から数値への変換が失敗した場合にVALUE_ERRORが呼び出されます。 (SQL文では、INVALID_NUMBERが呼び出されます。)
ZERO_DIVIDE 01476 -1476 数値を0(ゼロ)で割ろうとしたとき。

コメント

タイトルとURLをコピーしました