ここでは、特定の条件が一致しない場合にPL / SQLストアド・プロシージャでアプリケーション・エラー(raise_application_error)を発生させる例を示します。指定された従業員番号(empno)のEMPテーブルで手数料(comm)がnullの場合、プログラムは例外を発生させます。
PL/SQLの例でのRaise_Application_Error
CREATE OR REPLACE PROCEDURE compute_sal (i_EMPNO IN emp.empno%TYPE)
IS
CURSOR c_emp (p_empno emp.empno%TYPE)
IS
SELECT sal, comm
FROM emp
WHERE empno = p_empno;
v_sal NUMBER;
v_comm NUMBER;
BEGIN
OPEN c_emp (i_empno);
FETCH c_emp
INTO v_sal, v_comm;
CLOSE c_emp;
IF v_comm IS NULL
THEN
raise_application_error (-20001, 'Commission is null.');
END IF;
DBMS_OUTPUT.put_line ('Total salary is: ' || (v_sal + v_comm));
END compute_sal;
/ 実行
SET SERVEROUTPUT ON; BEGIN COMPUTE_SAL(7369); END; /
出力
SQL> SET SERVEROUTPUT ON; SQL> BEGIN 2 COMPUTE_SAL(7369); 3 END; 4 / BEGIN * ERROR at line 1: ORA-20001: Commission is null. ORA-06512: at "SCOTT.COMPUTE_SAL", line 16 ORA-06512: at line 2
参照:
- PL/SQLでエラー行番号を検索する
- OracleFormsのOn-Errorトリガーの例
- エラーOracle12cデータベースインストールガイド