другая процедура (типа логирования), которая должна в зависимости от того была в вызывающей ошибка или нет, писать разный текст. В Оракл это было реализовано через псевдопеременную sqlcode, т.е. если он не 0, то ошибка и пишем одно, иначе другое. В Postgres есть схожая штука SQLSTATE, но насколько я понимаю, она не будет доступна внутри процедуры, которую я вызываю для логирования. Как такое можно реализовать не меня интерфейсы функции?
> В Postgres есть схожая штука SQLSTATE Да, но с ней обращаются не совсем так, как Вы пишете. Посмотрите https://www.postgresql.org/docs/current/plpgsql-control-structures.html#PLPGSQL-ERROR-TRAPPING , раздел "42.6.8.1. Obtaining Information about an Error", там и пример есть.
Рано я обрадовался... GET STACKED DIAGNOSTICS тоже только в блоке exception может вызываться. У меня кейс такой в функции error_func случается ошибка и она перехватывается в блоке exception, после чего из этого блока вызывается функция log_error, которая должна в случае того, если её вызвали из блока exception - выдать один текст, а если просто вызвали из обычного блока кода, то другой. Если я верно понимаю документацию, то такое сделать не выйдет, без проброса какого-либо атрибута в саму функцию?
А, я вообще неправильно понял вопрос, извините. :(
Обсуждают сегодня