ORACLE SQL リファレンス(逆引き)

ORACLE SQL リファレンス

Web oracle.se-free.com
例外の処理(EXCEPTION)
スポンサード リンク

例外セクションの定義は以下のようになります。


EXCEPTION
 WHEN 例外名1 TEHN
  例外1の場合のエラー処理;
 WHEN 例外名2 TEHN
  例外2の場合のエラー処理;
  :
  :
 WHEN OTHERS THEN
  上記以外の例外の場合のエラー処理;
END;
エラーが発生すると、例外セクションに制御が渡されます。

例外セクションでは、WHEN句で指定された、対応する例外処理が実行されます。

どの例外にも該当しない場合は、WHEN OTHERSで定義された例外処理が実行されます。


例1) 例外ブロック
declare

 v_dept_id dept.dept_id%type;
 v_dept_name dept.dept_name%type;

begin

 select dept_id,dept_name into v_dept_id,v_dept_name from dept
    where dept_id = 'D01';

 dbms_output.put_line('部門コード:' || v_dept_id);
 dbms_output.put_line('部門名:' || v_dept_name);

 exception
  when TOO_MANY_ROWS then
   -- 例外「TOO_MANY_ROWS」が発生した場合の処理
   dbms_output.put_line('複数レコード取得されました');
  when others then
   -- 「TOO_MANY_ROWS」以外の例外が発生した場合の処理
   dbms_output.put_line('その他エラー');

end;


スポンサード リンク


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

スポンサード リンク


例外の処理(EXCEPTION)
独自の例外を定義
オラクルエラーコード/エラーメッセージを取得する(SQLCODE/SQLERRM)

PL/SQL へ
忘れっぽいエンジニアのオラクルSQLリファレンス TOPへ