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

Posted

技术标签:

【中文标题】关于oracle 10g中嵌套表扩展的困惑【英文标题】:Confusion regarding Nested Table Extend in oracle 10g 【发布时间】:2015-04-25 00:24:54 【问题描述】:

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

【问题讨论】:

查看documentation 了解如何初始化和引用嵌套表类型。 对不起,但我没有在上面共享的文档链接中找到不初始化和扩展嵌套表的概念..你能指向确切的页面吗... 【参考方案1】:

使用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 为你进行初始化和扩展。

【讨论】:

以上是关于关于oracle 10g中嵌套表扩展的困惑的主要内容,如果未能解决你的问题,请参考以下文章

嵌套表用法详解(PLSQL)

在 Oracle 10g 中创建嵌套过程

oracle如何查询嵌套表的分项

当嵌套表属于记录类型时,如何将数据填充到 Oracle 中的嵌套表中

oracle10g数据库如何扩充表空间

无法将值存储到 oracle 中的嵌套表中