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>