Недавно у меня был какой-то вклад коллеги относительно фиксации в сохраненной функции.Используем ли мы процедуры или функции для выполнения автономной / пакетной логики в базе данных Oracle, в большинстве случаев дело нашего вкуса.В обоих случаях мы возвращаем код либо как результат функции, либо как параметр процедуры OUT
.Обычно мы требуем, чтобы эти автономные / пакетные подпрограммы вызывались из PL / SQL, а не из SQL:
-- good
declare
rc number(7);
begin
rc := our_function(1, 2, 3);
end;
-- less good
select our_function(1, 2, 3) from dual;
Причина, по которой последняя менее хороша, заключается в том, что our_function
может зафиксировать транзакцию по соображениям производительности.Это нормально для пакетной процедуры.
Вопрос в следующем: существуют ли передовые практики по этой теме или какие-то специальные ключевые слова, которые не позволяют использовать такие функции в инструкциях SQL на уровне компилятора?Или мы должны избегать функций для пакетных операций и использовать только процедуры?