Um exemplo é dado aqui para gerar um erro de aplicativo (raise_application_error) no procedimento armazenado PL/SQL se a determinada condição não corresponder. O programa irá gerar uma exceção se a comissão (comm) for nula na tabela EMP para determinado número de funcionário (empno).
Raise_Application_Error no exemplo de PL/SQL
CREATE OR REPLACE PROCEDURE compute_sal (i_EMPNO IN emp.empno%TYPE)ISCURSOR c_emp (p_empno emp.empno%TYPE)ISSELECT sal, commFROM empWHERE empno =p_empno;v_sal NUMBER;v_comm NUMBER;BEGINOPEN c_emp (i_empno);FETCH c_empINTO v_sal, v_comm;CLOSE c_emp;IF v_comm IS NULLTHENraise_application_error (-20001, 'Comissão é nula.');END IF;DBMS_OUTPUT.put_line('O salário total é:' || (v_sal + v_comm));END compute_sal;/Executar
SET SERVEROUTPUT ON;BEGINCOMPUTE_SAL(7369);END;/Saída
SQL> SET SERVEROUTPUT ON;SQL> BEGIN2 COMPUTE_SAL(7369);3 END;4 /BEGIN*ERROR na linha 1:ORA-20001:Comissão é nula.ORA-06512:em "SCOTT.COMPUTE_SAL", linha 16ORA -06512:na linha 2
Veja também:
- Encontre o número da linha de erro em PL/SQL
- Um exemplo de gatilho On-Error no Oracle Forms
- Guia de instalação do banco de dados Oracle 12c de erro