declare
x number;
begin
x := 80;
dbms_output.put_line(‘abc’);
declare
y number;
begin
y := 90;
dbms_output.put_line(‘Inner Block variable value ‘ || y);
end;
dbms_output.put_line(‘Outer Block variable value ‘ || x);
end;
Scope of variables
A variable declared in the outer block is accessible in the inner block. But a variable declared in the inner block is accessible only in the inner block.
declare
outer number;
begin
outer := 80;
declare
inner number;
begin
inner := 90;
dbms_output.put_line(‘Inner Block variable value ‘ || inner);
dbms_output.put_line(‘Outer block variable is accessible in the inner
block’);
dbms_output.put_line(‘Outer block variable value ‘ || outer);
end;
dbms_output.put_line(‘Outer Block variable value ‘ || outer);
dbms_output.put_line(‘Inner Block variable value ‘ || inner);
end;
/
Labels
If the variables names of the outer and inner blocks are same then labels have to be used within the inner block to avoid ambiguity.
<>
declare
x number;
begin
declare
x number := 100;
begin
dbms_output.put_line(‘Value of the inner block x is ‘ || x);
— Giving value of x of the inner block to the outer block x
outer_block.x := x;
end;
x := x 500;
dbms_output.put_line(‘Value of the outer block x is ‘ || x);
end;
/