Oracle 11g 是否优化了数组上的 For 循环?如果是这样,它是如何做到的?
示例:
以下代码是否将每个实例lt_some_array(i)
视为指向数组中索引处记录的指针i
?或者,它是否每次都查找它?
FOR i IN lt_some_array.FIRST..lt_some_array.LAST
LOOP
field1 := lt_some_array(i).field1;
field2 := lt_some_array(i).field2;
field3 := lt_some_array(i).field3;
field4 := lt_some_array(i).field4;
field5 := lt_some_array(i).field5;
field6 := lt_some_array(i).field6;
do_something();
END LOOP;
澄清:
编译器是否将其视为如下(其中 lr_some_row 是指针而不是副本):
FOR i IN lt_some_array.FIRST..lt_some_array.LAST
LOOP
lr_some_row := lt_some_array(i);
field1 := lr_some_row.field1;
field2 := lr_some_row.field2;
field3 := lr_some_row.field3;
field4 := lr_some_row.field4;
field5 := lr_some_row.field5;
field6 := lr_some_row.field6;
do_something();
END LOOP;