2
當我嘗試寫入函數的只讀參數(IN)時,Oracle抱怨出錯。但從函數的只寫(OUT)參數讀取時情況並非如此。 Oracle默默地允許這個沒有任何錯誤。這種行爲的原因是什麼? 下面的代碼執行沒有任何轉讓發生的事情「因此」變量:從pl/sql中的只寫參數(OUT)讀取
create or replace function foo(a OUT number) return number
is
so number;
begin
so := a; --no assignment happens here
a := 42;
dbms_output.put_line('HiYA there');
dbms_output.put_line('VAlue:' || so);
return 5;
end;
/
declare
somevar number;
a number := 6;
begin
dbms_output.put_line('Before a:'|| a);
somevar := foo(a);
dbms_output.put_line('After a:' || a);
end;
/
這是我得到的輸出:
Before a:6
HiYA there
VAlue:
After a:42
感謝澄清。 – sqlgrasshopper5 2010-05-19 05:44:59