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>