From: | brian <brian(at)zijn-digital(dot)com> |
---|---|
To: | pgsql-general(at)postgresql(dot)org |
Subject: | Re: Returning multiple rows from a function? |
Date: | 2006-11-27 17:19:11 |
Message-ID: | 456B1E0F.7000907@zijn-digital.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Bret Schuhmacher wrote:
> Hi all,
>
> I'm trying to return multiple rows from a function, but all I can get
> with the code below is the first row. I got most of the function below
> off the net and I think the problem is the first "RETURN" statement,
> which stops the loop.
>
> CREATE OR replace function getOnCallVol() RETURNS RECORD AS $$
> DECLARE
> r RECORD; BEGIN
> FOR r IN
> select fname,lname,phone1,phone2,phone3,phone4,phone5
> from events e,volunteer v
> where (now() >= starttime and now()<=endtime and e.v_id =
> v.v_id)
> OR (fname='Backup') limit 2
>
> LOOP
> return r;
> END LOOP;
> RETURN null;
>
> END;
> $$ Language plpgsql;
>
> When I run the SQL alone, I get two rows, as I should:
> Mary Smith 1111111111 2222222222 3333333333 Backup
> Cellphone 3319993
> However, if I run it via the function (i.e. select getOnCallVol()), I
> get this:
> (Mary,Smith,1111111111,2222222222,3333333333,"","")
>
> Is there another way to get each row returned? I played around with
> making the function return a "SETOF RECORD" and using "RETURN NEXT", but
> had no luck.
> Thanks,
>
Use "RETURNS SETOF record" and "FOR r IN ... LOOP RETURN NEXT; END LOOP;
RETURN;"
brian
From | Date | Subject | |
---|---|---|---|
Next Message | Alexander Staubo | 2006-11-27 17:23:04 | Re: How to increace nightly backup speed |
Previous Message | Andrus | 2006-11-27 17:13:56 | How to increace nightly backup speed |