Mega Code Archive

 
Categories / Oracle PLSQL / Stored Procedure Function
 

Out with NOCOPY modifier

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>