| 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: | Whole Thread | Raw Message | 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 |