Oracle 12 (update внутри select)
От: Evgeniy Skvortsov Россия  
Дата: 28.07.21 17:05
Оценка:
Есть система сбора статистики работы БД, реализована в пакете в виде набора PIPELINED функций, возвращающая данные в виде коллекции
Есть некий сервис, который вызывает сбор инфы делая SELECT * FROM TABLE(функция_аггрегатор_всех_мелких_функций) ну и потом рассылая письма если есть срабатывание по неким условиям

Появилась необходимость внутри одной из функций сохранять текущее значение некой переменной, что бы при следующем вызове этой функции сравнить прошлое значение с текущим.
Сохранять планировалось в маленькой табличке, специально созданной для хранения всяких значений для этой системы.

Понятное дело Oracle не дает это сделать.
Про PRAGMA AUTONOMOUS_TRANSACTION читал, пробовал использовать — появляется какое-то неадекватное поведение функции, логику которого мне не удалось понять
К тому же Кайт категорически не рекомендует эту штуку использовать

Вопрос, существует ли какой-то рабочий способ адекватно сделать update одной строки в табличке во время выполнения select?

Или может есть какой-то способ сохранить всего 1 число (тип данных NUMBER) во время выполнения запроса?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.