sql >> Databasteknik >  >> RDS >> Oracle

PL/SQL - Exempel på höjning av applikationsfel

Ett exempel ges här för att skapa applikationsfel (raise_application_error) i PL/SQL lagrad procedur om det vissa villkoret inte matchar. Programmet kommer att ta upp ett undantag om provisionen (comm) är null i EMP-tabellen för givet anställdsnummer (empno).

Raise_Application_Error i PL/SQL-exempel

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;
/

Kör

SET SERVEROUTPUT ON;
BEGIN
COMPUTE_SAL(7369);
END;
/

Utdata

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

Se även:

  1. Hitta felradnummer i PL/SQL
  2. Ett exempel på utlösare vid fel i Oracle Forms
  3. Fel Oracle 12c-databasinstallationsguide
  1. Oracle REPLACE()-funktionen hanterar inte vagnreturer och radmatningar

  2. Är tabellnamn i MySQL skiftlägeskänsliga?

  3. Hur man beställer efter två kolumner i SQL?

  4. Kontrollera hur många postförsändelser som finns i kön i Databas Mail i SQL Server (T-SQL)