这可能是一个非常基本的问题,但我对oracle 10g中嵌套表的使用感到困惑。我们真的需要初始化它们并在插入之前扩展或者在10g版本中不需要它。我正在审查一些旧代码,发现他们在一个包中声明了嵌套表,然后使用批量收集在其中插入值,并且在嵌套变量中插入值之前没有使用初始化(构造函数)或扩展方法。这段代码工作正常。请确认我在这里缺少什么?
答案 0 :(得分:2)
使用bulk collect
时不需要初始化或扩展嵌套表,但在PL / SQL代码中明确添加行时确实需要。
批量收集:
declare
l_tab some_table_type;
begin
select a, b, c
bulk collect into l_tab
from mytable;
end;
对于PL / SQL:
declare
l_tab some_table_type;
begin
l_tab := some_table_type(); -- Initialise before use
for r in
( select a, b, c
from mytable
)
loop
l_tab.extend(); -- Extend before adding row
l_tab(l_tab.count) := r;
end loop;
end;
我想你可以说bulk collect
会为你做初始化和扩展。