A ``++WHILE++`` 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++``, ``++BREAK++`` or ``++THROW++`` statements in a more appropriate way.

== Noncompliant Code Example

----
WHILE @cond -- noncompliant, loop only executes once
BEGIN
  EXEC something;
  BREAK;
END;
...
WHILE @cond1 -- noncompliant, loop only executes once
BEGIN
  IF @cond2 
  BEGIN
    EXEC something;
    BREAK;
  END ELSE 
  BEGIN
    RETURN @value;
  END;
END;
----

== Compliant Solution

----
IF @cond
BEGIN
  EXEC something;
  BREAK;
END;
...
WHILE @cond
BEGIN
  IF @cond2 
  BEGIN
    EXEC something;
  END ELSE 
  BEGIN
    RETURN @value;
  END;
END;
----

ifdef::env-github,rspecator-view[]
'''
== Comments And Links
(visible only on this page)

include::../comments-and-links.adoc[]
endif::env-github,rspecator-view[]
