rspec/rules/S999/plsql/rule.adoc
Fred Tingaud 16f6c0aecf
Inline adoc when include has no additional value (#1940)
Inline adoc files when they are included exactly once.

Also fix language tags because this inlining gives us better information
on what language the code is written in.
2023-05-25 14:18:12 +02:00

67 lines
1.2 KiB
Plaintext

== Why is this an issue?
Jumping back to a previous statement using ``++GOTO++`` is a way to reimplement loops, which PL/SQL already provides in much more readable forms.
=== Noncompliant code example
[source,sql]
----
SET SERVEROUTPUT ON
DECLARE
result PLS_INTEGER := 0;
counter PLS_INTEGER := 1;
BEGIN
<<loop>>
result := result + counter;
counter := counter + 1;
IF counter <= 9 THEN
GOTO loop; -- Noncompliant
END IF;
DBMS_OUTPUT.PUT_LINE('Sum from 1 to 9 is ' || result); -- Displays 1 + 2 + ... + 8 + 9 = 45
END;
/
----
=== Compliant solution
[source,sql]
----
SET SERVEROUTPUT ON
DECLARE
result PLS_INTEGER := 0;
BEGIN
FOR counter IN 1 .. 9 LOOP
result := result + counter;
END LOOP;
DBMS_OUTPUT.PUT_LINE('Sum from 1 to 9 is ' || result); -- Displays 1 + 2 + ... + 8 + 9 = 45
END;
/
----
ifdef::env-github,rspecator-view[]
'''
== Implementation Specification
(visible only on this page)
=== Message
Replace this backwards GOTO by a loop.
'''
== Comments And Links
(visible only on this page)
=== on 22 May 2013, 09:39:52 Fabrice Bellingard wrote:
Implementation: \http://jira.sonarsource.com/browse/PLSQL-222
include::../comments-and-links.adoc[]
endif::env-github,rspecator-view[]