Stored Procedure Function Oracle PLSQL

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