A loop with at most one iteration is equivalent to the use of an IF
statement to conditionally execute one piece of code. No developer
expects to find such usage of a loop statement. If the initial intention of the author was really to conditionally execute one piece of code, an
IF
statement should be used in place.
At worst that was not the initial intention of the author and so the body of the loop should be fixed to use the nested RETURN
,
EXIT
, RAISE
or GOTO
statements in a more appropriate way.
Noncompliant code example
LOOP
counter := counter + 1;
dbms_output.put_line(counter);
EXIT; -- Noncompliant
END LOOP;
Compliant solution
LOOP
counter := counter + 1;
IF counter > 10 THEN
EXIT;
ELSE
dbms_output.put_line(counter);
END IF;
END LOOP;