G-4365
🆓Warning
Never use unconditional CONTINUE or EXIT in a loop.
Reason
An unconditional continue is either redundant (a continue as the last statement before the end of the loop) or causes dead code. An unconditional exit causes no looping and may cause dead code as well. If continue or exit is needed, it should always have a condition.
Example
Non-Compliant Example
begin
<<process_employees>>
loop
my_package.some_processing();
continue process_employees;
my_package.some_further_processing(); -- Dead code
end loop process_employees;
end;
/Issues
| Line | Column | Message |
|---|---|---|
| 6 | 16 |
Compliant Solution - ★★★★★
declare
co_first_year constant pls_integer := 1900;
begin
<<process_employees>>
loop
my_package.some_processing();
continue process_employees when extract(year from sysdate) > co_first_year;
my_package.some_further_processing();
end loop process_employees;
end;
/References
- same as Trivadis G-4365