A ``++GOTO++`` statement is an unstructured change in the control flow. They should be avoided and replaced by structured constructs.

== Noncompliant Code Example

[source,sql]
----
SET SERVEROUTPUT ON

DECLARE
  i PLS_INTEGER := 42;
BEGIN
  IF i < 0 THEN
    GOTO negative; -- Noncompliant
  END IF;

  DBMS_OUTPUT.PUT_LINE('positive');
  goto cleanup; -- Noncompliant

  <<negative>>
  DBMS_OUTPUT.PUT_LINE('negative!');

  <<cleanup>>
  NULL;
END;
/
----

== Compliant Solution

[source,sql]
----
SET SERVEROUTPUT ON

DECLARE
  i PLS_INTEGER := 42;
BEGIN
  IF i < 0 THEN
    DBMS_OUTPUT.PUT_LINE('negative!'); -- Compliant
  ELSE
    DBMS_OUTPUT.PUT_LINE('positive');
  END IF;
END;
/
----

ifdef::env-github,rspecator-view[]

'''
== Implementation Specification
(visible only on this page)

include::../message.adoc[]

'''
== Comments And Links
(visible only on this page)

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