通过索引进行Oracle PLSQL嵌套表迭代-索引是否会出现顺序错误?

通过索引进行Oracle PLSQL嵌套表迭代-索引是否会出现顺序错误?,oracle,for-loop,indexing,plsql,nested-table,Oracle,For Loop,Indexing,Plsql,Nested Table,我在不同的oracle.com网站上读到 FOR i IN nested_table.FIRST .. nested_table.LAST 这是在PLSQL中迭代嵌套表类型的所有元素(只要没有删除任何元素)时通常执行的操作 我的嵌套表产生的方式是 type nested_table_type is table of varchar2(20) 在另一个包裹里 nested_table other_package.nested_table_type := other_package.n

我在不同的oracle.com网站上读到

FOR i IN nested_table.FIRST .. nested_table.LAST
这是在PLSQL中迭代嵌套表类型的所有元素(只要没有删除任何元素)时通常执行的操作

我的嵌套表产生的方式是

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循环如何不遍历它们

谢谢你的帮助:)

编辑:


这很可能是某种沟通错误。我留下了原样的密码。尽管如此,还是要感谢您的阅读/回答,希望这对将来的某个人有所帮助:)

索引是有序的,只是您可以创建稀疏表,这意味着可能缺少一些索引


但是,对于您的情况,请先使用t中的
i。。t、 最后一个
非常好。

嵌套的表SQL列是无序的,但嵌套的表PL/SQL变量是有序的。在文档中,您可以阅读下一个方法的描述以了解更多详细信息。@kfinity这可能是我朋友所说的,我一定是误解了他。非常感谢!:)