Re: ecpg weird behavior - Mailing list pgsql-interfaces

From Thomas Lockhart
Subject Re: ecpg weird behavior
Date
Msg-id 3C9805FC.1F69702D@fourpalms.org
Whole thread Raw
In response to ecpg weird behavior  ("Nicolas Bazin" <nbazin@ingenico.com.au>)
List pgsql-interfaces
> > ... have an Oracle extension to use a cursor to select multiple
> > rows into variables declared as arrays. Have you run into this syntax or
> > thought about what it would take to implement it?
> Do you mean like this:
> exec sql begin declare section;
>         int amount[6];
>         char name[6][8];
> exec sql end declare section;
> ...
> exec sql select * into :name, :amount from "Test";

No (although I was not aware that the above would work). The example
looks like

exec sql begin declare section; char *name_arr[10];
exec sql end declare section;
exec sql declare names cursor for select name from horses;
strcpy(msg, "open");
exec sql open names;
exec sql fetch names into :name_arr;
exec sql close names;

So the syntax uses a cursor fetching into an array, rather than a
"select into". A couple of details on behavior from the Oracle docs:
 Each FETCH returns, at most, the number of rows in the array
dimension. Fewer rows are returned in the following cases: <snip cases> The cumulative number of rows returned can be
foundin the third
 
element  of sqlerrd in the SQLCA, called sqlerrd[2] in this guide.

The Oracle docs at the following URL are consistant with the examples I
was seeing:
 http://www-rohan.sdsu.edu/doc/oracle/server803/A54661_01/arr.htm#512

I'm guessing that this is a relatively short hop from your existing
array capabilities, but don't how close. What do you think?
                    - Thomas


pgsql-interfaces by date:

Previous
From: "Marin Dimitrov"
Date:
Subject: constants in PL/pgSQL
Next
From: "S. Bulterman"
Date:
Subject: Re: Problem with pgaccess