我有一个 PLSQL 函数,它填充并返回一个嵌套表:
select distinct id bulk collect into my_nested_table
from user
order by id;
return my_nested_table;
根据文档,嵌套表是多重集,没有固有的顺序。
尽管如此,我是否可以假设从上面的函数返回的嵌套表将按 id 排序(正如select
语句所暗示的那样)并保留该顺序,只要我不将它存储在数据库中?
提供文档链接是一个加分项。:)
我有一个 PLSQL 函数,它填充并返回一个嵌套表:
select distinct id bulk collect into my_nested_table
from user
order by id;
return my_nested_table;
根据文档,嵌套表是多重集,没有固有的顺序。
尽管如此,我是否可以假设从上面的函数返回的嵌套表将按 id 排序(正如select
语句所暗示的那样)并保留该顺序,只要我不将它存储在数据库中?
提供文档链接是一个加分项。:)
首先你应该知道,什么是NESTED TABLE
在数据库中,嵌套表可以被认为是一列数据库表。Oracle 以无特定顺序存储嵌套表的行。但是,当您将嵌套表检索到 PL/SQL 变量中时,会为行提供从 1 开始的连续下标。这使您可以像数组一样访问各个行
它是单列表,具有 的行为array
,但它们是无界的(大小可以动态增加)。此外,最初NESTED TABLE
本质上是密集的,但后来它们变得稀疏(一旦您从中删除任何元素)。
您可以依赖收集的顺序,直到它包含在 pl/sql 中并且不执行任何添加或删除元素进一步收集。