Nested Blocks

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;
/

 

Posted in UncategorizedTagged