Re: User defined exceptions

Поиск
Список
Период
Сортировка
От David G. Johnston
Тема Re: User defined exceptions
Дата
Msg-id CAKFQuwYsLNR60ANkPS3CurKH97HZJ+AR97Y3Rz_LFeS4OwjRGA@mail.gmail.com
обсуждение исходный текст
Ответ на User defined exceptions  (Alex Ignatov <a.ignatov@postgrespro.ru>)
Список pgsql-sql
On Wed, Jul 15, 2015 at 10:10 AM, Alex Ignatov <a.ignatov@postgrespro.ru> wrote:
Hello all!
Trying to emulate "named" user defined exception with:
CREATE OR REPLACE FUNCTION exception_aaa ()  RETURNS text AS $body$
BEGIN
   return 31234;     
END;
$body$
LANGUAGE PLPGSQL
SECURITY DEFINER
;

do $$
begin
   raise exception using errcode=exception_aaa();
exception
   when  sqlstate exception_aaa()
   then
      raise notice 'got exception %',sqlstate;
end;
$$
 
Got:

ERROR:  syntax error at or near "exception_aaa"
LINE 20: sqlstate exception_aaa()

I looks like "when  sqlstate exception_aaa()" doesn't work.

How can I catch exception in this case?

​I'm doubtful that it can be done presently.

If it were possible your exception_aaa function would have to be declared IMMUTABLE.  It also seems pointless to declare it security definer.

​There is nothing in the documentation that suggests that (or, to be fair, prohibits) the "condition" can be anything other than a pre-defined name or a constant string.  When plpgsql get a function body it doesn't go looking for random functions to execute.

David J.

В списке pgsql-sql по дате отправления:

Предыдущее
От: Alex Ignatov
Дата:
Сообщение: User defined exceptions
Следующее
От: Pavel Stehule
Дата:
Сообщение: Re: User defined exceptions