Re: User defined exceptions - Mailing list pgsql-sql

From David G. Johnston
Subject Re: User defined exceptions
Date
Msg-id CAKFQuwYsLNR60ANkPS3CurKH97HZJ+AR97Y3Rz_LFeS4OwjRGA@mail.gmail.com
Whole thread Raw
In response to User defined exceptions  (Alex Ignatov <a.ignatov@postgrespro.ru>)
List 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 by date:

Previous
From: Alex Ignatov
Date:
Subject: User defined exceptions
Next
From: Pavel Stehule
Date:
Subject: Re: User defined exceptions