declare
foo NUMBER;
begin
foo := 2;
dbms_output.put_line(foo);
begin
dbms_output.put_line('Entering nested block');
dbms_output.put_line(foo);
foo := 3;
dbms_output.put_line(foo);
dbms_output.put_line('Exiting nested block');
end;
dbms_output.put_line(foo);
end;
2
Entering nested block
2
3
Exiting nested block
3
declare
foo NUMBER;
procedure bar
as
begin
dbms_output.put_line('Entering bar');
dbms_output.put_line(foo);
foo := 4;
dbms_output.put_line(foo);
dbms_output.put_line('Exiting bar');
end bar;
begin
foo := 2;
dbms_output.put_line(foo);
bar();
dbms_output.put_line(foo);
end;
2
Entering bar
2
4
Exiting bar
4
declare
foo NUMBER;
procedure bar
as
foo NUMBER;
begin
dbms_output.put_line('Entering bar');
foo := 5;
dbms_output.put_line(foo);
dbms_output.put_line('Exiting bar');
end bar;
begin
foo := 2;
dbms_output.put_line(foo);
bar();
dbms_output.put_line(foo);
end;
2
Entering bar
5
Exiting bar
2
<<main>>
declare
foo NUMBER;
procedure bar
as
foo NUMBER;
begin
dbms_output.put_line('Entering bar');
foo := 5;
dbms_output.put_line('anonymous foo: ' || main.foo);
dbms_output.put_line('bar foo: ' || bar.foo);--can do bar.foo or just foo
dbms_output.put_line('Exiting bar');
end bar;
begin
foo := 2;
bar();
dbms_output.put_line(foo);
end;
Entering bar
anonymous foo: 2
bar foo: 5
Exiting bar
2