Uploaded image for project: 'Rules Repository'
  1. Rules Repository
  2. RSPEC-2536

Procedures should have parameters

    XMLWordPrintable

    Details

    • Type: Code Smell Detection
    • Status: Active
    • Resolution: Unresolved
    • Labels:
    • Message:
      Refactor this procedure to take parameters.
    • Default Severity:
      Major
    • Impact:
      Low
    • Likelihood:
      High
    • Default Quality Profiles:
      Sonar way
    • Legacy Key:
      ProcedureWithoutParametersCheck
    • Covered Languages:
      PL/SQL
    • Remediation Function:
      Constant/Issue
    • Constant Cost:
      1h

      Description

      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

      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

      SET SERVEROUTPUT ON
      
      DECLARE
        PROCEDURE print_name(name VARCHAR2) AS -- Compliant
        BEGIN
          DBMS_OUTPUT.PUT_LINE('Name: ' || name);
        END;
      BEGIN
        print_name('John');
      END;
      /
      

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              Unassigned Unassigned
              Reporter:
              ann.campbell.2 Ann Campbell
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Dates

                Created:
                Updated: