include::../why-general.adoc[] === Noncompliant code example The example below shows the typical situation in which shadowing can occur. [source,sql,diff-id=1,diff-type=noncompliant] ---- 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,diff-id=1,diff-type=compliant] ---- 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::../rspecator.adoc[]