すべてのプロダクト
Search
ドキュメントセンター

PolarDB:RAISE_APPLICATION_ERROR

最終更新日:May 29, 2024

RAISE_APPLICATION_ERRORストアドプロシージャは、開発者が例外を引き起こすことによってプロシージャが呼び出されるSPLプログラムの処理を意図的に中止することを可能にする。

例外は、例外処理で説明したのと同じ方法で処理されます。 さらに、RAISE_APPLICATION_ERRORストアドプロシージャは、プログラムのユーザー定義コードとエラーメッセージを提供します。 このようにして、例外を識別することができる。

RAISE_APPLICATION_ERROR(error_number, message);

説明:

  • error_numberは、ストアドプロシージャの実行時にSQLCODEという名前の変数で返される整数値または式です。 error_numberは-20000と-20999の間の値でなければなりません。
  • メッセージは文字列リテラルまたはSQLERRMという名前の変数で返される式です。

次の例では、RAISE_APPLICATION_ERRORストアドプロシージャを使用して、不足している従業員情報に基づいて別のコードとメッセージを表示します。

CREATE OR REPLACE PROCEDURE verify_emp ()
    p_empno番号
)
IS
    v_ename         emp.ename%TYPE;
    v_job           emp.job%TYPE;
    v_mgr           emp.mgr%TYPE;
    v_hiredate emp.hiredate % TYPE;
開始
    SELECT ename、job、mgr、hiredate
        インv_ename、v_job、v_mgr、v_hiredate FROM emp
        empno = p_empno;
    IF v_ename IS NULL THEN
        RAISE_APPLICATION_ERROR(-20010、'の名前なし' | | p_empno);
    END IF;
    v_jobがNULLである場合
        RAISE_APPLICATION_ERROR(-20020、'No job for '| | p_empno);
    END IF;
    v_mgrがNULLの場合
        RAISE_APPLICATION_ERROR(-20030、'No manager for '| | p_empno);
    END IF;
    v_hiredateがNULLである場合
        RAISE_APPLICATION_ERROR(-20040、「採用日なし」 | | p_empno);
    END IF;
    DBMS_OUTPUT.PUT_LINE('Employee '| | p_empno | |
        'エラーなしで検証された');
例外
    WHEN OTHERS THEN
        DBMS_OUTPUT.PUT_LINE('SQLCODE: ' || SQLCODE);
        DBMS_OUTPUT.PUT_LINE('SQLERRM: '| | SQLERRM);
エンド; 

従業員レコードにマネージャー番号がない場合、次の出力が生成されます。

EXEC verify_emp(7839);

SQLCODE: -20030
SQLERRM: polar-20030: マネージャーなし7839