Hi, I am using ecpg to manipulate the whole row in a
table,and I have a problem in array, can anybody give
me a hint or a small test program to process array?
First of all , I create a table(trdday) just as
follow: 1. edit a trdday.sql file
CREATE TABLE trdday ( id int PRIMARY KEY, pv int[3] ); 2. psql -f trdday.sql mydb
3.I insert a row of data via trdday_insert, but got
following messge :
sql error Postgres error: ERROR: Attribute 'pv' is of type '_int4' but expression is of type 'int4' You will
needto rewrite or cast the expression line 13. Segmentation fault (core dumped)
4. I insert two rows of data under psql: insert into trdday values(1,'{11,22,33}'); insert into trdday
values(2,'{44,55,66}');5. Finally, I can find two rows of data in trdday.
Then I write a program (trdday_select.pgc):
exec sql whenever sqlerror sqlprint; exec sql include sqlca; main () { typedef struct { int pv[3]; }
int_array; exec sql type int_array is struct { int pv[3];
}; exec sql begin declare section; struct data { int id; int_array a; }
temp; exec sql end declare section;
exec sql connect to mydb; exec sql select * into :temp from trdday where
id=1; exec sql commit; exec sql disconnect; exit(0); }
When I execute the program trdday_select, I got
following error message:
sql error Not correctly formatted int type:
{11,22,33} line 17. sql error Not correctly formatted int type:
{11,22,33} line 17. sql error Not correctly formatted int type:
{11,22,33} line 17.
Here is my trdday_insert.pgc:
exec sql whenever sqlerror sqlprint;
/*exec sql include sqlca;*/
main ()
{ exec sql begin declare section; int id; int pv[3] = {11,22,33}; exec sql end declare section;
exec sql connect to mydb; exec sql insert into trdday(id,pv) values(1,:pv); exec sql commit; exec sql disconnect
all; exit(0);
}
Thanks S.F.Lee
_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com