PL / SQL例外処理の概要で説明したように、ユーザー定義の例外を宣言する方法は3つあります。これらの3つの方法の中で、ユーザー定義の例外を宣言する最初の2つの方法をすでに学習しました
- 声明を上げて
- Raise_Application_Errorプロシージャ
ここで説明する必要がある唯一の方法は、OracleデータベースのPRAGMAEXCEPTION_INIT関数を使用してユーザー定義の例外を宣言することです。
したがって、このPL / SQLチュートリアルでは、PRAGMA EXCEPTION_INIT関数を使用して、OracleデータベースでPL/SQLユーザー定義例外を宣言する方法を学習します。
PRAGMA EXCEPTION_INITとは何ですか?
Pragma Exception_Initは、最初の部分がキーワードPRAGMAで構成され、2番目の部分がException_Init呼び出しである2つの部分からなるステートメントです。
PRAGMAキーワード
プラグマは、ステートメントの後にキーワードPRAGMAが続くことを示すコンパイラ指令です。これは、ステートメントが実行時ではなくコンパイル時に処理されることを意味します。
PRAGMA Exception_Init
Exception_initは、例外名をOracleエラー番号に関連付けるのに役立ちます。つまり、Exception_Initを使用すると、例外に名前を付けることができます。
例外に名前を付ける理由
はい、名前なしでユーザー定義の例外を宣言する方法があります。それは、Raise_Exception_Errorプロシージャを使用することです。これは確かにシンプルで簡単な方法ですが、前回のチュートリアルで名前なしで例外を処理することを学んだように、OTHERS例外ハンドラーを使用します。
ここで、プロジェクトに複数の例外があり、それも名前がないと考えてください。これらすべての例外を処理するために、OTHERSという名前の単一の例外ハンドラーがあります。この場合、例外条件が発生すると、コンパイラはOTHERハンドラによって生成されたエラースタックを表示します。
エラーの原因となっているプロジェクトの部分を追跡することがどれほど難しいか想像できますか。その部分を追跡するには、コードのすべての行を調べる必要があります。これは単なる時間の無駄になります。
例外に名前を付けるだけで、これらの時間の無駄な労力をすべて節約できます。これにより、簡単に追跡できる例外の名前に固有の例外ハンドラーを設計できます。これは、例外に名前を付けることの利点です。
PragmaException_Initの構文。
PRAGMA EXCEPTION_INIT (exception_name, error_number);
例:PragmaException_Initを使用してユーザー定義の例外を宣言する
DECLARE ex_age EXCEPTION; age NUMBER := 17; PRAGMA EXCEPTION_INIT(ex_age, -20008); BEGIN IF age<18 THEN RAISE_APPLICATION_ERROR(-20008, 'You should be 18 or above for the drinks!'); END IF; DBMS_OUTPUT.PUT_LINE('Sure! What would you like to have?'); EXCEPTION WHEN ex_age THEN DBMS_OUTPUT.PUT_LINE(SQLERRM); END; /
この例については、YouTubeチャンネルのビデオチュートリアルで詳しく説明しました。そこでチュートリアルを確認してください。
RAISE_APPLICATION_ERRORでPRAGMAEXCEPTION_INITを使用する理由
RAISE_APPLICATION_ERRORプロシージャでPRAGMAEXCEPTION_INITを使用することは必須ではありませんが、プログラミングルールよりも個人的な好みです。 Oracleの標準的なエラー表示方法のようなエラー番号を含むエラーメッセージを出力する場合は、RAISE_APPLICATION_ERRORプロシージャでPRAGMAEXCEPTION_INITを使用することをお勧めします。
ただし、エラー番号ではなくエラーメッセージだけを出力したい場合は、RAISEステートメントでPRAGMAEXCEPTION_INITを使用できます。
これは、PRAGMAEXCEPTION_INITを使用してOracleデータベースでユーザー定義の例外を宣言する方法に関するPL/SQLチュートリアルです。あなたが何か新しいことを学んだことを願っています。このチュートリアルが参考になる場合は、ソーシャルメディアで共有してください。ありがとう&素晴らしい一日を!