Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Khi nào tôi nên lồng các khối PL / SQL BEGIN ... END?

Khi bạn muốn xử lý cục bộ các ngoại lệ như thế này:

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;

Trong ví dụ này, trường hợp ngoại lệ được xử lý, sau đó chúng tôi tiếp tục và xử lý nhân viên tiếp theo.

Một cách sử dụng khác là khai báo các biến cục bộ có phạm vi giới hạn như sau:

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;

Xin lưu ý bạn, việc muốn làm điều này thường là dấu hiệu cho thấy chương trình của bạn quá lớn và nên bị chia nhỏ:

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. Làm thế nào để kết nối trong java dưới dạng SYS với Oracle?

  2. Nhà phát triển SQL Oracle:Không thành công - Kiểm tra không thành công:Bộ điều hợp mạng không thể thiết lập kết nối?

  3. Làm thế nào để triển khai các mối quan hệ một-một, một-nhiều và nhiều-nhiều trong khi thiết kế bảng?

  4. Oracle 10g - tối ưu hóa KHI KHÔNG ĐẦY ĐỦ

  5. Oracle:Hiệu suất Thu thập hàng loạt