IN OUT NOCOPY : NOCOPY « Function Procedure Packages « Oracle PL/SQL Tutorial






SQL>
SQL>
SQL> CREATE OR REPLACE PROCEDURE very_confusing (
  2     arg1   IN              VARCHAR2
  3   , arg2   IN OUT          VARCHAR2
  4   , arg3   IN OUT NOCOPY   VARCHAR2
  5  )
  6  IS
  7  BEGIN
  8     arg2 := 'Second value';
  9     DBMS_OUTPUT.put_line ('arg2 assigned, arg1 = ' || arg1);
 10     arg3 := 'Third value';
 11     DBMS_OUTPUT.put_line ('arg3 assigned, arg1 = ' || arg1);
 12  END;
 13  /

Procedure created.

SQL>
SQL> DECLARE
  2     str   VARCHAR2 (100) := 'First value';
  3  BEGIN
  4     DBMS_OUTPUT.put_line ('str before = ' || str);
  5     very_confusing (str, str, str);
  6     DBMS_OUTPUT.put_line ('str after = ' || str);
  7  END;
  8  /

PL/SQL procedure successfully completed.

SQL>








27.18.NOCOPY
27.18.1.You can pass variables by reference, even in PL/SQL
27.18.2.The hint NOCOPY is applicable only to OUT and IN OUT types of variables
27.18.3.Performance improvement of NOCOPY
27.18.4.IN OUT NOCOPY
27.18.5.The behavior of NOCOPY.