sql >> データベース >  >> RDS >> Oracle

Oracleデータベースで例外変数を使用してユーザー定義の例外を宣言する方法

    PL / SQL例外の概要では、OracleDatabaseでユーザー定義の例外を宣言する方法が3つあることを学びました。このチュートリアルでは、最初の方法を検討し、Exceptionデータ型の変数を使用してユーザー定義の例外を宣言する方法を学習します。

    Exception変数を使用してユーザー定義の例外を宣言することは、3つのステップのプロセスです。これらの3つのステップは–

    1. 例外データ型の変数を宣言する– この変数は、その肩にすべての負担をかけることになります。
    2. 例外を発生させる– これは、例外をトリガーする条件についてコンパイラーに通知する部分です。
    3. 例外を処理する– これは、発生したエラーがトリガーされたときに何が発生するかを指定する最後のセクションです。

    このPL/SQLチュートリアルでは、PL / SQLコードを使用して、これら3つのステップのそれぞれについて説明します。

    デモンストレーションの目的で、除数演算で除数がゼロかどうかをチェックするコードを記述します。ゼロの場合はエラーが発生し、ユーザーに表示されます。それ以外の場合は、除算演算の結果である実際の値が出力画面に返されます。

    ステップ1:例外データ型の変数を宣言する

    例外変数とは、例外データ型を持つ変数を意味します。他のPL/SQL変数と同様に、匿名および名前付きPL/SQLブロックの宣言セクションで例外変数を宣言できます。この例外変数は、コードのユーザー定義の例外として機能します。

    DECLARE
      var_dividend NUMBER := 24;
      var_divisor NUMBER := 0;
      var_result NUMBER;
      ex_DivZero EXCEPTION;
    

    この宣言セクションには、4つの変数があります。これらの4つの変数のうち、最初の3つは通常のNumberデータ型変数であり、ex_DivZeroである4つの変数は特別なEXCEPTIONデータ型変数です。この変数は、このプログラムのユーザー定義の例外になります。

    ステップ2:例外を発生させる

    例外変数を宣言した後の次のステップは、例外を発生させることです。 PL / SQLで例外を発生させるには、Raiseステートメントを使用します。

    Raise文は、コードの通常の実行フローを変更する特殊な種類のPL/SQL文です。コンパイラがraise条件に遭遇するとすぐに、制御を例外ハンドラに移します。

    BEGIN
      IF var_divisor = 0 THEN
        RAISE ex_DivZero;
      END IF;
    

    ここで、レイズ条件はIF-THEN条件を伴います。これにより、プログラムの制御フロー中に不要なスイッチを回避できます。 If条件を使用して、除数が0に等しい場合にのみこのエラーが発生することを確認しています。

    var_result := var_dividend/var_divisor;
      DBMS_OUTPUT.PUT_LINE('Result = ' ||var_result);
    

    エラーを発生させるためのロジックを記述した後、ここで行ったように、コードの他の実行可能ステートメントを記述できます。 Raiseステートメントの後、除算演算の算術演算を実行し、結果を変数var_resultに格納し、DBMSOUTPUTステートメントを使用して出力として表示します。

    ステップ3:例外を処理する

    これがコードのメインセクションです。ここでは、ユーザー定義の例外のロジックを記述し、そのエラーが発生した場合に何をすべきかをコンパイラーに指示します。

    EXCEPTION WHEN ex_DivZero THEN
        DBMS_OUTPUT.PUT_LINE('Error Error - Your Divisor is Zero');
    END;
    /
    

    ここに、変数ex_DivZeroの例外ハンドラーがあります。例外処理セクションには、ex_DivZeroであるユーザー定義エラーが発生したときに表示されるDBMSOUTPUTステートメントがあります。

    それでは、これらすべてのコードのチャンクをグループ化しましょう。

    OracleデータベースでPL/SQLユーザー定義の例外を使用してゼロ除算エラー

    SET SERVEROUTPUT ON;
    DECLARE
      var_dividend NUMBER := 24;
      var_divisor NUMBER := 0;
      var_result NUMBER;
      ex_DivZero EXCEPTION;
    BEGIN
      IF var_divisor = 0 THEN
        RAISE ex_DivZero;
      END IF;
      var_result := var_dividend/var_divisor;
      DBMS_OUTPUT.PUT_LINE('Result = ' ||var_result);
      EXCEPTION WHEN ex_DivZero THEN
          DBMS_OUTPUT.PUT_LINE('Error Error - Your Divisor is Zero');
    END;
    /
    

    このプログラムを実行する前に、SERVEROUTPUTがオンに設定されていることを確認してください。オンに設定されていないと、結果を確認できません。

    手順1と同様に、除数の値をゼロに設定すると、ユーザー定義エラーex_DivZeroが発生します。これにより、上記のコードをコンパイルすると、指定したものと同じ文字列「エラーエラー-除数がゼロ」が表示されます。例外ハンドラーで(ステップ3)。

    これは、Exceptionデータ型の変数を使用してユーザー定義の例外を宣言する方法に関するPL/SQLチュートリアルです。あなたが楽しんで、何か新しいことを学んだことを願っています。もしそうなら、あなたのソーシャルメディアでこのブログを共有し、私と私のチャンネルと一緒に他の人が学ぶのを手伝ってください。ありがとう&素晴らしい一日を!


    1. 大量のデータに対応するPostgreSQLのスケーリング

    2. MySQLで非ASCII文字を見つけるにはどうすればよいですか?

    3. MariaDBOpenWorksカンファレンスでの変革のストーリー

    4. AzureContainerServiceでのDockerSwarmクラスターの作成