嵌套的 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
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 中并且不执行任何添加或删除进一步收集的元素。
我有一个 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
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 中并且不执行任何添加或删除进一步收集的元素。