内部的に定義された例外

内部的に定義された例外(ORA-nエラー)の詳細はOracle Databaseエラー・メッセージ・リファレンスを参照してください。これらの例外はランタイム・システムによって暗黙的(自動的)に呼び出されます。

内部的に定義された例外には、PL/SQLで指定されている(「事前定義の例外」を参照)かユーザーが指定しないかぎり、名前はありません。

名前のない内部的に定義された特定の例外がデータベース操作によって呼び出される可能性があるとわかっている場合は、その例外に名前を付け、それ専用の例外ハンドラを記述できるようにします。そうしない場合は、OTHERS例外ハンドラ以外では処理できません。

内部的に定義された例外に名前を指定するには、適切な無名ブロック、サブプログラムまたはパッケージの宣言部で次の処理を実行します。(適切なブロックを判定する方法は、「例外の伝播」を参照してください。)

  1. 名前を宣言します。

    例外名の宣言には次の構文を使用します。

    exception_name EXCEPTION;
    

    セマンティクスの詳細は、「例外宣言」を参照してください。

  2. 内部的に定義された例外のエラー・コードと名前を関連付けます。

    構文は次のとおりです:

    PRAGMA EXCEPTION_INIT (exception_name, error_code)
    

    セマンティクスの詳細は、「EXCEPTION_INITプラグマ」を参照してください。

ノート:

内部的に定義された例外は、ユーザーが宣言した名前が付いていても内部的に定義された例外のままであり、ユーザー定義の例外ではありません。

例12-5では、内部的に定義された例外ORA-00060(リソース待機の間にデッドロックが検出されました。)にdeadlock_detectedという名前を指定し、この名前を例外ハンドラで使用しています。

例12-5 内部的に定義された例外への名前付け

DECLARE
  deadlock_detected EXCEPTION;
  PRAGMA EXCEPTION_INIT(deadlock_detected, -60);
BEGIN
  ...
EXCEPTION
  WHEN deadlock_detected THEN
    ...
END;
/