PL/SQL & SQL CODING GUIDELINE 49 - Avoid use of unreferenced FOR loop indexes

條款四十九,避免未使用的 FOR loop 索引。


像是下面這樣的程式使用了 numeric FOR loop,卻未使用 FOR loop 的索引,導致程式碼變得更為複雜沒有效率。

1
2
3
4
5
6
7
8
9
10
11
12
DECLARE
...
BEGIN
l_row := co_lower_bound;
l_value := co_first_value;
<<for_loop>>
FOR i IN co_lower_bound .. co_upper_bound LOOP
sys.dbms_output.put_line(l_row || co_delimiter || l_value);
l_row := l_row + co_row_incr;
l_value := l_value + co_value_incr;
END LOOP for_loop;
END;


比較好的作法是要看看是否能透過索引撰寫出更適合的程式,如果不行則要反思這邊使用 numeric FOR loop 是否合適。

1
2
3
4
5
6
7
8
9
DECLARE
...
BEGIN
<<for_loop>>
FOR i IN co_lower_bound .. co_upper_bound
LOOP
sys.dbms_output.put_line(i || co_delimiter || to_char(co_first_value + i * co_value_incr));
END LOOP for_loop;
END;