From: | Alexey Bashtanov <bashtanov(at)imap(dot)cc> |
---|---|
To: | Alex Ignatov <a(dot)ignatov(at)postgrespro(dot)ru>, pgsql-sql(at)postgresql(dot)org |
Subject: | Re: User defined exceptions |
Date: | 2015-07-17 07:36:55 |
Message-ID: | 55A8B097.8000303@imap.cc |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | 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
From | Date | Subject | |
---|---|---|---|
Next Message | Alex Ignatov | 2015-07-17 15:31:39 | Re: User defined exceptions |
Previous Message | Alexey Bashtanov | 2015-07-17 07:34:11 | Re: User defined exceptions |