條款四十四,總是使用 WHILE loop 去處理 loose array。

像是下面這樣的程式用 FOR loop 去遍巡處理 loose array,這不是被建議使用的寫法,雖然大部分的狀況下可以正常運行,但是當 loose array 的內容被刪除時,這樣的處理會因為 null 元素而運行錯誤。

DECLARE 
  ...
  l_index PLS_INTEGER; 
BEGIN 
  ...
  IF t_employees IS NOT NULL THEN
    <<process_employees>>
    FOR i IN 1..t_employees.COUNT()
    LOOP
      ...
    END LOOP process_employees;
  END IF;
END;

建議使用 WHILE loop 遍巡處理 loose array,才不會因為 Null 元素導致錯誤。

DECLARE 
  ...
  l_index PLS_INTEGER; 
BEGIN 
  l_index := t_employees.FIRST(); 

  <<process_employees>> 
  WHILE l_index IS NOT NULL 
  LOOP 
    ...
    l_index := t_employees.NEXT(l_index); 
  END LOOP process_employees; 
END;