manipulate array wiht ecpg

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

Browse pgsql-interfaces by date

  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'