Обсуждение: manipulate array wiht ecpg

Поиск
Список
Период
Сортировка

manipulate array wiht ecpg

От
"S.F. Lee"
Дата:
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


Re: [INTERFACES] manipulate array wiht ecpg

От
Michael Meskes
Дата:
On Mon, Dec 27, 1999 at 01:51:39AM -0800, S.F. Lee wrote:
>    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?

Unfortunately this is a known bug in ecpg. It's listed on the TODO list.
However, I have no idea so far how to fix it. The only way you can insert an
array is by listing its members. That is you have to create your insert
statement via sprintf for instance and use exec sql execute immediate.

Sorry. I will fix it as soon as I find a solution.

The problem is that ecpg also allows inserting the whole array as single
integers by only listing the array.

Michael
-- 
Michael Meskes                         | Go SF 49ers!
Th.-Heuss-Str. 61, D-41812 Erkelenz    | Go Rhein Fire!
Tel.: (+49) 2431/72651                 | Use Debian GNU/Linux!
Email: Michael@Fam-Meskes.De           | Use PostgreSQL!