嵌套的 table 在未存储时是否保留顺序?

Does a nested table retain order while not being stored?

我有一个 PLSQL 函数来填充 returns 一个嵌套的 table:

select distinct id bulk collect into my_nested_table
from user
order by id;
return my_nested_table;

根据文档,嵌套的 table 是多重集,没有固有的顺序。

我是否可以假设从上面的函数返回的嵌套 table 将按 id 排序(如 select 语句所暗示的那样)并保留该顺序只要我不存储它在数据库中?

为文档提供 link 是加分项。 :)

首先你要知道,什么是NESTED TABLE

根据Oracle Doc

Within the database, nested tables can be considered one-column database tables. Oracle stores the rows of a nested table in no particular order. But, when you retrieve the nested table into a PL/SQL variable, the rows are given consecutive subscripts starting at 1. That gives you array-like access to individual rows

它是 单列 table,具有 array 的行为,但它们是无界的(大小可以动态增加)。此外,最初 NESTED TABLE 本质上是密集的,但后来它们变得稀疏(一旦从中删除任何元素)。

您可以依赖收集顺序,直到它保存在 pl/sql 中并且不执行任何添加或删除进一步收集的元素。