нужно вернуть данные, значит использовать после блока временную таблицу с циклом жизни в транзакции вне блока и саму транзакцию,
при наличии ошибок после окончания анонимного блока скрипт прерывается, до commit не доходит.
есть ли возможность обработать ошибку также как в анонимном блоке exception?
может можно как то попроще переписать код?
BEGIN;
DO $$
BEGIN
....
END$$
SELECT ....
SELECT ...
....
COMMIT;
завернуть в обычную функцию?
это понятно, но каждый раз делать create, drop как то странно, да и не всегда права есть на такие операции
у вас скрипт с переменными, почему бы эту функцию не оставить для следующего раза запуска под другие переменные? или у вас настолько кровавый интерпрайз, что вы своими изменениями прямо в БД делаете скриптами, которые потом и не найдешь)
потому что это скрипт выполнения рутинных операций, оставлять свое в чужом месте как то не кошерно, но и создавать функции и тут же удалять тоже вариант так себе. У ms sql вообще проблем с этим нет, а здесь приходится выкручиваться.
да уж) куда смотрят чужие, что у них в БД ктото рутинные операции делает и не оставляет следов)
давать людям права на создание функций без документации и захламлять бд - это очень нехороший вариант.
Обсуждают сегодня