जब आप स्थानीय रूप से इस तरह के अपवादों को संभालना चाहते हैं:
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;
इस उदाहरण में, अपवाद को संभाला जाता है और फिर हम अगले कर्मचारी को आगे बढ़ाते हैं और संसाधित करते हैं।
एक अन्य उपयोग स्थानीय चर घोषित करना है जिनके पास इस तरह सीमित दायरा है:
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;
ध्यान रहे, ऐसा करने की इच्छा अक्सर इस बात का संकेत है कि आपका कार्यक्रम बहुत बड़ा है और इसे तोड़ दिया जाना चाहिए:
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;