关于嵌套表扩展的困惑在oracle 10g中

时间:2015-02-23 15:59:38

标签: oracle

这可能是一个非常基本的问题,但我对oracle 10g中嵌套表的使用感到困惑。我们真的需要初始化它们并在插入之前扩展或者在10g版本中不需要它。我正在审查一些旧代码,发现他们在一个包中声明了嵌套表,然后使用批量收集在其中插入值,并且在嵌套变量中插入值之前没有使用初始化(构造函数)或扩展方法。这段代码工作正常。请确认我在这里缺少什么?

1 个答案:

答案 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会为你做初始化和扩展。