Procedures which don't accept parameters are likely to either not be reused that often or to depend on global variables instead. Refactoring those procedures to take parameters will make them both more flexible and reusable.


== Noncompliant Code Example

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

DECLARE
  name VARCHAR2(42) := 'John';

  PROCEDURE print_name; -- Noncompliant

  PROCEDURE print_name AS -- Noncompliant
  BEGIN
    DBMS_OUTPUT.PUT_LINE('Name: ' || name);
  END;

BEGIN
  print_name;
END;
/
----


== Compliant Solution

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

DECLARE
  PROCEDURE print_name(name VARCHAR2) AS -- Compliant
  BEGIN
    DBMS_OUTPUT.PUT_LINE('Name: ' || name);
  END;
BEGIN
  print_name('John');
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[]
