rspec/rules/S999/plsql/rule.adoc

67 lines
1.2 KiB
Plaintext
Raw Normal View History

== Why is this an issue?
2021-01-27 13:42:22 +01:00
Jumping back to a previous statement using ``++GOTO++`` is a way to reimplement loops, which PL/SQL already provides in much more readable forms.
2020-06-30 12:50:59 +02:00
=== Noncompliant code example
2020-06-30 12:50:59 +02:00
2022-02-04 17:28:24 +01:00
[source,sql]
2020-06-30 12:50:59 +02:00
----
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
2020-06-30 12:50:59 +02:00
2022-02-04 17:28:24 +01:00
[source,sql]
2020-06-30 12:50:59 +02:00
----
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[]