Oracle
 sql >> база данни >  >> RDS >> Oracle

Имат ли вложените блокове някакво влияние върху производителността в PL/SQL процедурите?

Те не изглеждат:

set timing on
set serveroutput on

declare
  x number := 0;
begin
  dbms_output.put_line('No inner blocks');
  for i in 1..1000000 loop
    x := x + 1;
  end loop;
  dbms_output.put_line(x);
end;
/

anonymous block completed
Elapsed: 00:00:00.095
No inner blocks
1000000

Изпълнява се по едно и също време, с малко вариации във всяка посока, като:

declare
  x number := 0;
begin
  dbms_output.put_line('Nested inner blocks');
  for i in 1..1000000 loop
    begin
      begin
        begin
          begin
            x := x + 1;
          exception
            when others then
              raise;
          end;
        exception
          when others then
            raise;
        end;
      exception
        when others then
          raise;
      end;
    exception
      when others then
        raise;
    end;
  end loop;
  dbms_output.put_line(x);
end;
/

anonymous block completed
Elapsed: 00:00:00.090
Nested inner blocks
1000000

Разбира се, възможно е компилаторът да премахва излишните слоеве, но не съм сигурен, че наистина може с манипулаторите на изключения там, тъй като това би повлияло на резултата.

Не съм виждал никакво ограничение за това колко дълбоко могат да бъдат вложените блокове - документацията просто казва „блоковете могат да бъдат вложени“. Моделът, който използвате, улавяйки конкретна грешка и оставяйки другите да се разпространят, е добър и доста стандартен - въпреки че очевидно във вашия измислен пример не е необходимо, но вие знаете това.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да върна набор от резултати/курсор от анонимен блок на Oracle PL/SQL, който изпълнява Dynamic SQL?

  2. ORA-24247:достъпът до мрежата е отказан от списъка за контрол на достъпа (ACL) при изпращане на имейл оракул

  3. Топ-N заявки и пагинация в Oracle

  4. Незадължителни обекти на база данни

  5. Извикване на pl/sql функция с mybatis 3