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

Czy zagnieżdżone bloki mają jakikolwiek wpływ na wydajność w procedurach PL/SQL?

Nie wydaje się, aby:

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

Działa w tym samym czasie, z niewielką zmiennością w każdą stronę, jak:

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

Oczywiście jest możliwe, że kompilator usuwa nadmiarowe warstwy, ale nie jestem pewien, czy naprawdę może to zrobić z tamtejszymi programami obsługi wyjątków, ponieważ wpłynęłoby to na wynik.

Nie widziałem żadnych ograniczeń co do głębokości zagnieżdżonych bloków — dokumentacja mówi tylko, że „bloki mogą być zagnieżdżone”. Model, którego używasz, wyłapywanie konkretnego błędu i pozwolenie innym na rozprzestrzenianie się, jest w porządku i dość standardowy - choć oczywiście w twoim wymyślonym przykładzie nie jest to konieczne, ale wiesz o tym.




  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 zaktualizować kolumnę BLOB, błąd ORA-00932, podczas gdy wstawka działa?

  2. Wiele baz danych z nieznacznie zmieniającymi się modelami. Jak zezwolić `EF` na pracę z różnymi strukturami bazy danych w czasie wykonywania?

  3. kompilowanie nieprawidłowych procedur wyroczni

  4. Łączenie się z bazą danych Oracle przez Excel

  5. Oracle 10:Używanie HEXTORAW do wypełniania danych blob