【发布时间】:2020-07-24 21:04:00
【问题描述】:
这似乎是一个基本的事情,但我无法弄清楚。 我有一个如下所示的 PLSQL 代码块。它创建一个简单的稀疏关联数组,并在下标处存储 5 个元素为 -1,0,1,2,100。
打印 ARRAY.LAST 给出 100,ARRAY.COUNT 给出 5。在我的 while 循环中,它会正确打印所有元素。 但是从 ARRAY.FIRST 到 ARRAY.LAST 的 For 循环只打印连续下标处的元素直到 2,即使 ARRAY.LAST 给出 100
DECLARE
TYPE assoc_array IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
table1 assoc_array;
i BINARY_INTEGER;
BEGIN
table1(-1) := 100;
table1(0) := 101;
table1(1) := 102;
table1(2) := 103;
table1(100) := 104;
i := table1.FIRST;
dbms_output.put_line(table1.FIRST);
dbms_output.put_line(table1.LAST);
dbms_output.put_line(table1.COUNT);
i := table1.first;
while (i is not null)
loop
dbms_output.put_line( table1(i) );
i := table1.next(i);
end loop;
dbms_output.put_line( '***');
for i IN table1.FIRST .. table1.LAST
loop
dbms_output.put_line(table1(i) );
end loop;
END;
输出如下:
-1
100
5
100
101
102
103
104
***
100
101
102
103
【问题讨论】:
标签: sql arrays oracle plsql associative-array