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. Какъв тип обект връща методът за изпълнение на Spring Hibernate Template за заявка за броене в Oracle?

  2. ORA-12154 не можа да разреши посочения идентификатор за свързване

  3. Oracle PL/SQL - съвети за незабавен изход / конзолен печат

  4. Замяна на текст в колона BLOB

  5. Как да запишете BLOB като файл в PL/SQL?