This is a little complex to explain - so its probably better with an example..
I don't know if theres some inbuilt function to tell you what datatype a value is - so 'kludged' this together : CREATE OR REPLACE FUNCTION rval_type(m date) RETURNS text AS $$ BEGIN RETURN 'it was a date'; END; $$ LANGUAGE plpgsql; CREATE OR REPLACE FUNCTION rval_type(m text) RETURNS text AS $$ BEGIN RETURN 'it was a text'; END; $$ LANGUAGE plpgsql; CREATE OR REPLACE FUNCTION rval_type(m int) RETURNS text AS $$ BEGIN RETURN 'it was a int'; END; $$ LANGUAGE plpgsql; Now - if I have a cpc containing : main() { exec sql begin declare section; date d; int i; char a[200]; char lv_out[200]; exec sql end declare section; exec sql database test1; d=0; i=0; strcpy(a,"-"); memset(lv_out,0,sizeof(lv_out)); exec sql select rval_type(:d) into :lv_out; if (sqlca.sqlcode<0) sqlprint(); else printf("%s\n",lv_out); exec sql select rval_type(:i) into :lv_out; if (sqlca.sqlcode<0) sqlprint(); else printf("%s\n",lv_out); exec sql select rval_type(:a) into :lv_out; if (sqlca.sqlcode<0) sqlprint(); else printf("%s\n",lv_out); } You can see I'm passing in a date, then an integer, then a character string. However - when you run the code you get : it was a text it was a text it was a text This to me looks 'wrong', especially when previous versions of ecpg (<8.0?) gave the correct : it was a date it was a int it was a text Any thoughts ? (This is manifesting itself as arithmetic errors when I'm using dates in my application) -- Mike Aubury Aubit Computing Ltd is registered in England and Wales, Number: 3112827 Registered Address : Clayton House,59 Piccadilly,Manchester,M1 2AQ -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers