create or replace procedure my_proc1(temp out number)
is
begin
temp:=2;
end;
----------------------------
create or replace procedure my_proc2(temp out nocopy number)
is
begin
temp:=2;
end;
----------------------------
declare
i number:=1;
begin
dbms_output.put_line(i);
my_proc1(i);
dbms_output.put_line(i);
my_proc2(i);
dbms_output.put_line(i);
end;
输出为:
1
2
2
out模式的形参默认是传值的,声明为nocopy后就变成传引用.
这么说,应该输出为1,1,2才对呀.现在好像my_proc1与my_proc2完全没有区别了,
我是按照java中的传值,与传引用的区别来理解是这样的,
很明显的,temp已经重新被赋值了;