Stored Procedure Function Oracle PLSQL

SQL> CREATE OR REPLACE PROCEDURE RaiseError (p_Raise IN BOOLEAN,pA OUT NUMBER) AS
  2   BEGIN
  3     pA := 7;
  4
  5     IF p_Raise THEN
  6       RAISE DUP_VAL_ON_INDEX;
  7     ELSE
  8       RETURN;
  9     END IF;
 10   END RaiseError;
 11   /
Procedure created.
SQL>
SQL> show errors
No errors.
SQL>
SQL> set serveroutput on
SQL>
SQL> 
SQL> DECLARE
  2     v_Num NUMBER := 1;
  3   BEGIN
  4     DBMS_OUTPUT.PUT_LINE('Value before first call: ' || v_Num);
  5     RaiseError(FALSE, v_Num);
  6     DBMS_OUTPUT.PUT_LINE('Value after successful call: ' || v_Num);
  7     DBMS_OUTPUT.PUT_LINE('');
  8
  9     v_Num := 2;
 10     DBMS_OUTPUT.PUT_LINE('Value before second call: ' || v_Num);
 11     RaiseError(TRUE, v_Num);
 12   EXCEPTION
 13     WHEN OTHERS THEN
 14        DBMS_OUTPUT.PUT_LINE('Value after unsuccessful call: ' || v_Num);
 15   END;
 16   /
Value before first call: 1
Value after successful call: 7
Value before second call: 2
Value after unsuccessful call: 2
PL/SQL procedure successfully completed.
SQL>