Re: User defined exceptions - Mailing list pgsql-sql

From Alexey Bashtanov
Subject Re: User defined exceptions
Date
Msg-id 55A8AFF3.7040305@ocslab.com
Whole thread
In response to User defined exceptions  (Alex Ignatov <a.ignatov@postgrespro.ru>)
List pgsql-sql
On 15.07.2015 17:10, Alex Ignatov 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?

Hello Alex,

The following workaround could be used:

do $$
begin
   raise exception using errcode = exception_aaa();
exception
   when others then
      if sqlstate = exception_aaa() then
         raise notice 'got exception %',sqlstate;
      else
         raise; --reraise
      end if;
end;
$$

Not sure if its performance is the same as in simple exception catch, maybe it would degrade.

Best Regards,
   Alexey Bashtanov

pgsql-sql by date:

Previous
From: Alex Ignatov
Date:
Subject: Re: User defined exceptions
Next
From: Mario Splivalo
Date:
Subject: Getting the list of foreign keys (for deleting data from the database)