SQL>
SQL>
SQL>
SQL>
SQL> CREATE OR REPLACE PROCEDURE RaiseError (
2 p_Raise IN BOOLEAN := TRUE,
3 p_ParameterA OUT NUMBER) AS
4 BEGIN
5 p_ParameterA := 7;
6
7 IF p_Raise THEN
8 RAISE DUP_VAL_ON_INDEX;
9 ELSE
10 RETURN;
11 END IF;
12 END RaiseError;
13 /
SP2-0804: Procedure created with compilation warnings
SQL> DECLARE
2 v_TempVar NUMBER := 1;
3 BEGIN
4 DBMS_OUTPUT.put_line('Initial value');
5 RaiseError(FALSE, v_TempVar);
6
7 DBMS_OUTPUT.put_line('Value after successful call');
8
9 v_TempVar := 2;
10 DBMS_OUTPUT.put_line('Value before 2nd call');
11 RaiseError(TRUE, v_TempVar);
12 EXCEPTION
13 WHEN OTHERS THEN
14 DBMS_OUTPUT.put_line('Value after unsuccessful call');
15 END;
16 /
Initial value
Value after successful call
Value before 2nd call
Value after unsuccessful call
PL/SQL procedure successfully completed.
SQL>
SQL>