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 |
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 |