條款四十五,避免使用 EXIT 去跳離迴圈,除非使用的是 basic loop。
像是下面這樣的程式,使用了 EXIT 去跳離迴圈,但是非 basic loop 都有迴圈的邊界條件可以設定,可以做到一樣的事情,所以這樣的寫法並不是很好。
...
i := co_min_value;
>
WHILE (i co_max_value;
END LOOP while_loop;
>
FOR i IN co_min_value..co_max_value
LOOP
...
EXIT for_loop WHEN i = co_max_value;
END LOOP for_loop;
>
FOR r_employee IN (SELECT last_name FROM employees)
LOOP
...
EXIT process_employees;
END LOOP process_employees;
...
若使用非 basic loop,建議使用邊界條件來跳離迴圈。而 basic loop 因為沒有邊界條件的設定,因此也只能使用 EXIT 來跳離迴圈。
>
WHILE (i >
LOOP
EXIT basic_loop;
END LOOP basic_loop;
>
FOR i IN co_min_value..co_max_value
LOOP
...
END LOOP for_loop;
>
FOR r_employee IN (SELECT last_name FROM employees)
LOOP
...
END LOOP process_employees;