Oracle PLSQL 通过索引嵌套 table 迭代 - 索引可以乱序吗?

Oracle PLSQL nested table iteration via index - can indices be out of order?

我一直在不同的 oracle.com 网站上阅读

FOR i IN nested_table.FIRST .. nested_table.LAST

是您通常在 PLSQL 中执行的操作,当遍历嵌套 table 类型的所有元素时(只要没有元素被删除)。

我的嵌套 table 的实现方式是

type  nested_table_type  is table of  varchar2(20)

并在不同的包中

nested_table   other_package.nested_table_type := other_package.nested_table_type();

然后再循环

nested_table.extend;
nested_table(nested_table.last) := something;

任意次数。 然后,我想对每个值做一些事情,有点像在其他语言中使用 for each。我可以在这里使用for循环吗?有人告诉我要小心,因为在 Oracle 的情况下,索引可能不按顺序排列,因此 for 循环可能不会考虑某些索引。我肯定会用这个,他说:

index := nested_table.first;
while (index is not null)
loop
   do things...
   index := nested_table.next(index);
end loop;

这是真的吗?索引不按顺序或 for 循环如何不遍历它们?

感谢您的帮助:)

编辑:

这很可能是某种沟通不畅。我按原样保留了代码。尽管如此,还是感谢您阅读/回答,希望这对以后的人或事有所帮助:)

索引是有序的,只是您可以创建稀疏table,这意味着某些索引可能会丢失。

但是,对于您的情况,使用 i IN t.FIRST .. t.LAST 完全没问题。