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 |
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 по дате отправления: