TransWikia.com

Как сделать, чтобы процедура всегда компилировась с заданным уровнем оптимизации?

Stack Overflow на русском Asked by 0xdb on October 20, 2020

Eсть PL/SQL-процедура с большой интенсивностью вычислений. Если она не скомпилирована с уровнем оптимизации 3 (по умолчанию установленно 2), то ее производительность заметно ниже.

Как сделать, чтобы процедура всегда компилировалась с уровнем оптимизации не ниже 3?


Свободный перевод вопроса How can I make sure a PL/SQL program is compiled with optimization turned on? от участника @Steven Feuerstein

One Answer

В этом случае надо воспользоваться условной компиляцией, а точнее, директивой ERROR.

Воспроизводимый пример:

create or replace procedure computation is
begin
    $IF $$plsql_optimize_level < 3 $THEN
        $ERROR 'This procedure must be compiled with plsql_optimize_level=3 or higher!' $END
    $END
    for n in 1..10e6 loop null; end loop; 
end computation;
/
LINE/COL  ERROR
--------- -------------------------------------------------------------
4/9       PLS-00179: $ERROR: This procedure must be compiled with plsql_optimize_level=3 or higher!

alter session set plsql_optimize_level=3
/
alter procedure computation compile
/
exec computation 

PL/SQL procedure successfully completed.

Свободный перевод ответа от участника @Steven Feuerstein

Answered by 0xdb on October 20, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP