Re: [GENERAL] retrieving function raise messages in ecpg embedded sql code
-Original Message- From: Jeff Davis [mailto:pg...@j-davis.com] On Mon, 2012-06-18 at 21:35 +, Haszlakiewicz, Eric wrote: I'm trying to get some additional information back from a trigger to my embedded SQL program, to essentially emulate Informix's way of generating serial values. I can get the serial to be generated, but I'm trying to figure out how to get the generated value back to my program with minimal changes to the SQL. Have you already looked at INSERT...RETURNING? http://www.postgresql.org/docs/9.2/static/sql-insert.html Yes, I've started modifying things to use that, but I'd like to avoid doing that so I can share the same code between postgresql and informix builds. I can't figure out how to retrieve the message raised by the trigger. I know it's available in some cases, because I see the message when I insert a row through psql, but even things like this: printf(%s\n, PQerrorMessage(ECPGget_PGconn(mydb))); return nothing useful. Is there a way to get this information? Yes, these messages are delivered via notice processing (not to be confused with LISTEN/NOTIFY): http://www.postgresql.org/docs/9.2/static/libpq-notice-processing.html That looks like exactly what I'm looking for, I'll try it out. Thanks! eric -- Sent via pgsql-general mailing list (pgsql-general@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general
Re: [GENERAL] retrieving function raise messages in ecpg embedded sql code
On Mon, 2012-06-18 at 21:35 +, Haszlakiewicz, Eric wrote: I'm trying to get some additional information back from a trigger to my embedded SQL program, to essentially emulate Informix's way of generating serial values. I can get the serial to be generated, but I'm trying to figure out how to get the generated value back to my program with minimal changes to the SQL. Have you already looked at INSERT...RETURNING? http://www.postgresql.org/docs/9.2/static/sql-insert.html I can't figure out how to retrieve the message raised by the trigger. I know it's available in some cases, because I see the message when I insert a row through psql, but even things like this: printf(%s\n, PQerrorMessage(ECPGget_PGconn(mydb))); return nothing useful. Is there a way to get this information? Yes, these messages are delivered via notice processing (not to be confused with LISTEN/NOTIFY): http://www.postgresql.org/docs/9.2/static/libpq-notice-processing.html Regards, Jeff Davis -- Sent via pgsql-general mailing list (pgsql-general@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general
[GENERAL] retrieving function raise messages in ecpg embedded sql code
I'm trying to get some additional information back from a trigger to my embedded SQL program, to essentially emulate Informix's way of generating serial values. I can get the serial to be generated, but I'm trying to figure out how to get the generated value back to my program with minimal changes to the SQL. I have a trigger that looks a bit like this: create table mytable (mycol integer, mycol2 integer); create or replace function functionfoo() returns trigger as $QUOTED$ BEGIN new.mycol = nextval(TG_TABLE_NAME || '_mycol_seq'); raise INFO using MESSAGE = 'A Message'; return new; END; $QUOTED$ LANGUAGE 'plpgsql'; create trigger mytable_insert_trig before insert on mytable for each row when (new.mycol = 0) execute procedure functionfoo(); My ecpg program looks a bit like this: exec sql begin declare section; long mycol1; long mycol2; const char *mydb; exec sql end declare section; mycol1 = 0; mycol2 = 1; mydb = mydb; exec sql connect to :mydb; exec sql prepare row_insert from insert into mytable values (?, ?); EXEC SQL EXECUTE row_insert using :mycol1, mycol2; I can't figure out how to retrieve the message raised by the trigger. I know it's available in some cases, because I see the message when I insert a row through psql, but even things like this: printf(%s\n, PQerrorMessage(ECPGget_PGconn(mydb))); return nothing useful. Is there a way to get this information? Thanks, eric -- Sent via pgsql-general mailing list (pgsql-general@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general