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
В этом случае надо воспользоваться условной компиляцией, а точнее, директивой 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
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP