この図は、例外および関連する例外ハンドラを示しています。トリガーは、エラー条件をチェックする条件文を使用して、アプリケーション・エラーを呼び出します。ユーザー定義のエラー・コードおよびメッセージは、エラー・ハンドラに戻されます。
PROCEDURE fire_emp (empid NUMBER) IS invalid_empid EXCEPTION PRAGMA EXCEPTION_INIT (invalid_empid, -20101); BEGIN DELETE FROM emp WHERE empno = empid; EXCEPTION WHEN invlid_empid THEN INSERT INTO emp_audit VALUES (empid, 'Fired before probation ended'); END;
次のプログラムでは、起動側環境(先行するプログラム)に対してエラー番号20101が戻されます。
TRIGGER emp_probation BEFORE DELETE ON emp FOR EACH ROW BEGIN IF (sysdate - :old.hiredate) < 30 THEN raise_application_error(20101, 'Employee' || old.ename || ' on probation') END IF; END;