== Why is this an issue?

include::../description.adoc[]

=== Noncompliant code example

[source,sql]
----
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

[source,sql]
----
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;
/
----


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[]
