Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

मुझे PL/SQL BEGIN...END ब्लॉक कब नेस्ट करना चाहिए?

जब आप स्थानीय रूप से इस तरह के अपवादों को संभालना चाहते हैं:

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; 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ऑरैकल में सीएसवी को टेबल में कैसे बदलें?

  2. ऑटो जनरेटिंग रिस्पांस फाइल

  3. ओरेकल में विश्लेषणात्मक कार्यों का उपयोग कैसे करें (कीवर्ड द्वारा विभाजन पर)

  4. Oracle PL/SQL में कॉलिंग प्रक्रिया या फ़ंक्शन का नाम प्राप्त करें

  5. ओआरए-00838