Обсуждение: ecpg: HOW TO READ RECORD ??

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

ecpg: HOW TO READ RECORD ??

От
"Roger Moloney"
Дата:
Hi,

We use ecpg (embedded sql) and plpgsql (postgres functions).

I'm having trouble trying to get embedded SQL to read the result of a 
plpgsql function which returns RECORD or SETOF RECORD.

Does anyone have an example of this ?  I don't see it in the ecpg source 
examples or in the ecpg manual.

/* following is an example of plpgsql to illustrate the data being returned 
*/

/* type defined for the record that the function will return to avoid using 
column list */
create type tp_GetPerson as ( person_name    char(40), person_age      smallint
);

/* this function returns zero or more tp_GetPerson records */
create function p_GetPersonByDept (pperson_dept integer) returns SETOF tp_GetPerson as
$$
declare v_record tp_GetPerson%ROWTYPE;
begin for v_record in   select person_name, person_age from person where person_dept = 
pperson_dept loop    return next v_record; end loop; return;
end
$$
language 'plpgsql';

WHAT SHOULD THE ECPG PROGRAM LOOK LIKE THAT CAN  READ THE DATA RETURNED ?

thanks,
RML

_________________________________________________________________
Download the latest version of Windows Live Messenger NOW! 
http://get.live.com/en-za/messenger/overview



Re: ecpg: HOW TO READ RECORD ??

От
Michael Meskes
Дата:
On Thu, Aug 23, 2007 at 02:55:10PM +0000, Roger Moloney wrote:
> I'm having trouble trying to get embedded SQL to read the result of a 
> plpgsql function which returns RECORD or SETOF RECORD.
> ...
> WHAT SHOULD THE ECPG PROGRAM LOOK LIKE THAT CAN  READ THE DATA RETURNED ?

Any reason to shout? :-)

You call that function with a select, right? So where's the difference
between the handling of a "normal" select that returns more than one
tuple (e.g. in preproc/define.pgc) and yours?

Or what am I misunderstanding here?

Michael
-- 
Michael Meskes
Email: Michael at Fam-Meskes dot De, Michael at Meskes dot (De|Com|Net|Org)
ICQ: 179140304, AIM/Yahoo: michaelmeskes, Jabber: meskes@jabber.org
Go SF 49ers! Go Rhein Fire! Use Debian GNU/Linux! Use PostgreSQL!