sql >> Databáze >  >> RDS >> Oracle

Kdy mám vnořit PL/SQL BEGIN...END bloky?

Pokud chcete výjimky zpracovávat lokálně takto:

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;

V tomto příkladu je výjimka zpracována a poté pokračujeme a zpracováváme dalšího zaměstnance.

Dalším použitím je deklarovat lokální proměnné, které mají omezený rozsah, jako je tento:

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;

Uvědomte si, že chtít to udělat je často známkou toho, že váš program je příliš velký a měl by být rozdělen:

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. MySQL ekvivalent ORACLES rank()

  2. Import ze souborů a export do souborů pomocí příkazového řádku MySQL

  3. Jak vrátit seznam podporovaných území v Oracle

  4. FOR XML PATH(''):Escapování speciálních znaků