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

----
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

----
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;
/
----
