Als u uitzonderingen lokaal als volgt wilt afhandelen:
begin
for emp_rec in (select * from emp) loop
begin
my_proc (emp_rec);
exception
when some_exception then
log_error('Failed to process employee '||emp_rec.empno);
end;
end loop;
end;
In dit voorbeeld wordt de uitzondering afgehandeld en gaan we verder en verwerken we de volgende medewerker.
Een ander gebruik is om lokale variabelen met een beperkte reikwijdte als volgt te declareren:
declare
l_var1 integer;
-- lots of variables
begin
-- lots of lines of code
...
for emp_rec in (select * from emp) loop
declare
l_localvar integer := 0;
begin
-- Use l_localvar
...
end
end loop;
end;
Let wel, dit willen doen is vaak een teken dat je programma te groot is en moet worden afgebroken:
declare
l_var1 integer;
-- lots of variables
...
procedure local_proc (emp_rec emp%rowtype):
l_localvar integer := 0;
begin
-- Use l_localvar
...
end
begin
-- lots of lines of code
...
for emp_rec in (select * from emp) loop
local_proc (emp_rec);
end loop;
end;