我有一个收藏夹,需要将此收藏夹复制到另一个收藏夹。
例如:
01:47
这是按参考还是按值分配?
这是复制嵌套表的正确方法吗?
我尝试过。似乎工作正常。 但是我在Oracle文档中找不到任何参考。
答案 0 :(得分:4)
示例internal_table := p_table;
中的分配是按值分配。
这里有一个小测试来说明它是如何工作的:
set serveroutput on
declare
TYPE my_table_type IS TABLE OF integer;
table_ my_table_type := new my_table_type();
internal_table my_table_type;
begin
table_.extend(1);
table_(1) := 123;
dbms_output.put_line(table_(1)); --output is 123
internal_table := table_;
dbms_output.put_line(internal_table(1)); --output is 123
table_(1) := 321;
dbms_output.put_line(table_(1)); --output is 321
dbms_output.put_line(internal_table(1)); --output is 123
end;
如您所见,internal_table
中的值没有改变,这意味着我们有两个不同的集合。
现在,如果您正在谈论test
过程的输入参数,则可以通过引用或通过值(取决于参数的模式)来传递它:
了解更多信息IN 参数始终通过引用传递。
默认情况下, IN OUT 或 OUT 参数是按值传递的。但是,如果您指定 NOCOPY 选项,则它们将通过引用传递。