Thread: plpgsql, Exception handling: catching the message ?
Hello, In an exception block, we can check the error code. Is there a way to get the message and possibly the detail too ? ereport(ERROR, \ (errcode(ERRCODE_SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION), \ => errmsg("could not establish connection"), \ => errdetail("%s", msg))); \ background: (Version 8.3.12) dblink seems to sometimes only provides information of the remote exception in the message, with a misleading errcode: select * from dblink_send_query ('c', 'create table my_share4( a int)'); select * from dblink_get_result('c') as t1(f1 text); ERROR: sql error DETAIL: ERROR: relation "my_share4" already exists ********** Error ********** ERROR: sql error SQL state: 42601 (<= SYNTAX ERROR) Detail: ERROR: relation "my_share4" already exists (=> DUPLICATE TABLE) best regards, Marc Mamin
Hello 2010/11/18 Marc Mamin <M.Mamin@intershop.de>: > > Hello, > > In an exception block, we can check the error code. > Is there a way to get the message and possibly the detail too ? > yes, but you need a 8.4 as minimum http://www.postgresql.org/docs/8.4/interactive/plpgsql-errors-and-messages.html Regards Pavel Stehule > > > ereport(ERROR, \ > (errcode(ERRCODE_SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION), \ > => errmsg("could not establish connection"), \ > => errdetail("%s", msg))); \ > > > > background: (Version 8.3.12) > dblink seems to sometimes only provides information of the remote > exception in the message, with a misleading errcode: > > > select * from dblink_send_query ('c', 'create table my_share4( a > int)'); > select * from dblink_get_result('c') as t1(f1 text); > > > ERROR: sql error > DETAIL: ERROR: relation "my_share4" already exists > > ********** Error ********** > > ERROR: sql error > SQL state: 42601 (<= SYNTAX ERROR) > Detail: ERROR: relation "my_share4" already exists (=> > DUPLICATE TABLE) > > > > best regards, > > Marc Mamin > > > > -- > Sent via pgsql-general mailing list (pgsql-general@postgresql.org) > To make changes to your subscription: > http://www.postgresql.org/mailpref/pgsql-general >