【发布时间】:2012-12-21 09:54:00
【问题描述】:
我正在分析一些现有的 PL\SQL 代码,我可以看到 Oracle 集合在使用表表达式的查询中未嵌套的情况。
没有 order 子句,代码显然假定项目将按存储在集合中的顺序返回。 我知道如果没有“order by”,您不能假设 select 返回的项目的顺序,但在这种情况下它似乎有效。
示例代码:
create type s_table as table of varchar2(100);
select rownum, t.* from table(s_table('TERM1', 'TERM2', 'TERM3')) t
我应该担心并更改代码吗?
【问题讨论】:
-
我没有成功“取消排序”它们,即使是并行(t 8)。这种构造是纯 pl/sql 并且它按顺序迭代它,因此保持顺序。但我不保证这一点。