== Why is this an issue? Simple loops, of the form ``++LOOP ... END LOOP++``, behave by default as infinite ones, since they do not have a loop condition. They can often be replaced by other, safer, loop constructs. === Noncompliant code example [source,sql] ---- SET SERVEROUTPUT ON DECLARE i PLS_INTEGER; BEGIN i := 1; LOOP -- Noncompliant, an infinite loop by default and therefore dangerous DBMS_OUTPUT.PUT_LINE('First loop i: ' || i); i := i + 1; EXIT WHEN i > 10; END LOOP; END; / ---- === Compliant solution [source,sql] ---- SET SERVEROUTPUT ON DECLARE i PLS_INTEGER; BEGIN FOR i IN 1..10 LOOP -- Compliant, much safer equivalent alternative DBMS_OUTPUT.PUT_LINE('Second loop i: ' || i); END LOOP; END; / ---- ifdef::env-github,rspecator-view[] ''' == Implementation Specification (visible only on this page) === Message Give this loop an end condition. endif::env-github,rspecator-view[]