include::../description.adoc[]

== Noncompliant Code Example

----
SET SERVEROUTPUT ON

DECLARE
  foo VARCHAR2(42) := 'foo';
BEGIN
  DECLARE
    foo VARCHAR2(42) := 'bar'; -- Noncompliant - this variable hides the one above and should be renamed
  BEGIN
    DBMS_OUTPUT.PUT_LINE(foo); -- Displays "bar", which is confusing
  END;

  DBMS_OUTPUT.PUT_LINE(foo); -- Displays "foo"
END;
/
----

== Compliant Solution

----
SET SERVEROUTPUT ON

DECLARE
  foo VARCHAR2(42) := 'foo';
BEGIN
  DECLARE
    bar VARCHAR2(42) := 'bar'; -- Compliant
  BEGIN
    DBMS_OUTPUT.PUT_LINE(bar); -- Displays "bar"
  END;

  DBMS_OUTPUT.PUT_LINE(foo); -- Displays "foo"
END;
/
----

include::../see.adoc[]
