SQLSTATE again

From: Pavel Stehule <stehule(at)kix(dot)fsv(dot)cvut(dot)cz>
To: pgsql-patches(at)postgresql(dot)org
Cc: neilc(at)samurai(dot)com, <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Subject: SQLSTATE again
Date: 2005-05-30 07:05:32
Message-ID: Pine.LNX.4.44.0505300858440.11699-200000@kix.fsv.cvut.cz
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-patches

Hello

I changed implementation of SQLSTATE from block scope variables on
function scope variables. I am not sure if it's moust elegant solution,
but is very similar Oracle behavior (there is session scope variable)

CREATE OR REPLACE FUNCTION ff() RETURNS void AS $$
BEGIN
RAISE NOTICE 'No exception: % %', SQLSTATE, SQLERRM;
DECLARE x integer;
BEGIN
x := 10/0;
EXCEPTION WHEN OTHERS THEN
BEGIN
RAISE NOTICE 'Div: % %', SQLSTATE, SQLERRM;
BEGIN
RAISE NOTICE 'Div2: % %', SQLSTATE, SQLERRM;
RAISE EXCEPTION 'My user exception';
EXCEPTION WHEN OTHERS THEN
RAISE NOTICE 'User: % %', SQLSTATE, SQLERRM;
END;
RAISE NOTICE '1: % %', SQLSTATE, SQLERRM;
END;
RAISE NOTICE '2: % %', SQLSTATE, SQLERRM;
END;
RAISE NOTICE '3: % %', SQLSTATE, SQLERRM;
END;
$$ LANGUAGE plpgsql;
select ff();

NOTICE: No exception: 00000 Successful completion
NOTICE: Div: 22012 division by zero
NOTICE: Div2: 22012 division by zero
NOTICE: User: P0001 My user exception
NOTICE: 1: 00000 Successful completion
NOTICE: 2: 00000 Successful completion
NOTICE: 3: 00000 Successful completion

Any comments?

Regards
Pavel Stehule

Attachment Content-Type Size
sqlstate.diff text/plain 6.3 KB

Responses

Browse pgsql-patches by date

  From Date Subject
Next Message Neil Conway 2005-05-30 07:41:26 Re: skip FK trigger on UPDATE
Previous Message Neil Conway 2005-05-30 07:04:41 Re: O_DIRECT for WAL writes