Oracle 11g は配列に対して For ループを最適化しますか? もしそうなら、それはどのようにしますか?
例:
次のコードは、 の各インスタンスをlt_some_array(i)
配列内の index のレコードへのポインタとして扱います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;