2023-05-03 11:06:20 +02:00
|
|
|
== 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
|
|
|
|
2023-05-03 11:06:20 +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;
|
|
|
|
/
|
|
|
|
----
|
|
|
|
|
2023-05-03 11:06:20 +02:00
|
|
|
=== 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;
|
|
|
|
/
|
|
|
|
----
|
2021-06-02 20:44:38 +02:00
|
|
|
|
2021-06-03 09:05:38 +02:00
|
|
|
ifdef::env-github,rspecator-view[]
|
2021-09-20 15:38:42 +02:00
|
|
|
|
|
|
|
'''
|
|
|
|
== Implementation Specification
|
|
|
|
(visible only on this page)
|
|
|
|
|
2023-05-25 14:18:12 +02:00
|
|
|
=== Message
|
|
|
|
|
|
|
|
Replace this backwards GOTO by a loop.
|
|
|
|
|
2021-09-20 15:38:42 +02:00
|
|
|
|
2021-06-08 15:52:13 +02:00
|
|
|
'''
|
2021-06-02 20:44:38 +02:00
|
|
|
== Comments And Links
|
|
|
|
(visible only on this page)
|
|
|
|
|
2023-05-25 14:18:12 +02:00
|
|
|
=== on 22 May 2013, 09:39:52 Fabrice Bellingard wrote:
|
|
|
|
Implementation: \http://jira.sonarsource.com/browse/PLSQL-222
|
|
|
|
|
|
|
|
include::../comments-and-links.adoc[]
|
|
|
|
|
2021-06-03 09:05:38 +02:00
|
|
|
endif::env-github,rspecator-view[]
|