In a CREATE PACKAGE BODY, the purpose of the initialization section is to set the initial values of the package's global variables. It is therefore surprising to find a RETURN statement there, as all its following statements will be unreachable.


== Noncompliant Code Example

----
SET SERVEROUTPUT ON

CREATE OR REPLACE PACKAGE foo AS
  FUNCTION getBar RETURN PLS_INTEGER;
  bar PLS_INTEGER;
END;
/

CREATE OR REPLACE PACKAGE BODY foo AS
  FUNCTION getBar RETURN PLS_INTEGER AS
  BEGIN
    RETURN bar; -- Compliant
  END;
BEGIN
  bar := 42;
  DBMS_OUTPUT.PUT_LINE('package loaded');
  RETURN; -- Noncompliant
  DBMS_OUTPUT.PUT_LINE('this is unreachable code');
END;
/

DROP PACKAGE BODY foo;

DROP PACKAGE foo;
----

