From: | "S(dot)F(dot) Lee" <sflee_tw(at)yahoo(dot)com> |
---|---|
To: | pgsql-interfaces(at)postgresql(dot)org |
Subject: | manipulate array wiht ecpg |
Date: | 1999-12-27 08:02:42 |
Message-ID: | 19991227080242.25837.rocketmail@web221.mail.yahoo.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-interfaces |
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 need to 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
From | Date | Subject | |
---|---|---|---|
Next Message | S.F. Lee | 1999-12-27 09:51:39 | manipulate array wiht ecpg |
Previous Message | Michael Meskes | 1999-12-24 09:56:33 | Re: [INTERFACES] Always get TranBlock notice using 'c' |