PL SQL Programming Oracle PLSQL Tutorial

Scope means the range of code within which a given identifier can be referenced.
An identifier can be referenced only by code executing inside the block in which the identifier was declared.
An identifier could be a variable name, or a procedure name, function name.
The following example illustrates the scope of various identifiers.

SQL> SET SERVEROUTPUT ON
SQL> DECLARE
  2    a_name  VARCHAR2(30) := 'James';
  3  PROCEDURE name_print IS
  4  BEGIN
  5    DBMS_OUTPUT.PUT_LINE(a_name);
  6  END;
  7
  8    BEGIN
  9       DBMS_OUTPUT.PUT_LINE(a_name);
 10    DECLARE
 11       b_name  VARCHAR2(30) := 'Jenny';
 12
 13     BEGIN
 14         DBMS_OUTPUT.PUT_LINE('Inside nested block');
 15         DBMS_OUTPUT.PUT_LINE(a_name);
 16         DBMS_OUTPUT.PUT_LINE(b_name);
 17         name_print;
 18     END;
 19     DBMS_OUTPUT.PUT_LINE('Back in the main block');
 20     --b_name is not defined in this block.
 21     --DBMS_OUTPUT.PUT_LINE(b_name);
 22     name_print;
 23  END;
 24   /
James
Inside nested block
James
Jenny
James
Back in the main block
James
PL/SQL procedure successfully completed.
SQL>