Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Kiedy należy zagnieżdżać bloki PL/SQL BEGIN...END?

Jeśli chcesz obsługiwać wyjątki lokalnie w ten sposób:

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;

W tym przykładzie wyjątek jest obsługiwany, a następnie kontynuujemy i przetwarzamy następnego pracownika.

Innym zastosowaniem jest zadeklarowanie zmiennych lokalnych o ograniczonym zakresie:

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;

Pamiętaj, że chęć zrobienia tego jest często oznaką, że Twój program jest zbyt duży i należy go zerwać:

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. Jak połączyć się z serwerem LDAP za pomocą node-oracledb?

  2. ORA-03113:koniec pliku na kanale komunikacyjnym

  3. Obsługa wyjątków wstawiania JDBC wsadowego

  4. jak przekazać zmienną ze skryptu powłoki do sqlplus

  5. Jak korzystać z funkcji Oracle LITAGG