cursors from pl/pgsql

From: Marc Menem <marc(dot)menem(at)m4x(dot)org>
To: pgsql-general(at)postgresql(dot)org
Subject: cursors from pl/pgsql
Date: 2010-04-07 01:58:50
Message-ID: x2rd33b58461004061858s8da86aa8ibbf033a17be2f1af@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hi all,

I'm trying to use a cursor returned by a function from another function. But
I can't seem to get it working correctly. The error message is:
ERROR: cursor FOR loop must use a bound cursor variable
I am not sure how to bind it;

my code is similar to this:

create or replace function store_normalize(groupid_in varchar(20)) RETURNS
int AS $$
DECLARE
outputcursor refcursor;
normrow_r record;
BEGIN
perform normalize('outputcursor', groupid_in);
for normrow_r in outputcursor loop
insert into factordata(factorid, stockid, value, date)
values (normrow_r.factorid, normrow_r.stockid, normrow_r.value,
normrow_r.date);
end loop;
close ouputcursor;
END LOOP;
return 1;
END;
$$ LANGUAGE plpgsql;

CREATE OR REPLACE FUNCTION normalize(outputcursor refcursor,
groupid_in varchar(20)
) RETURNS refcursor AS $$
BEGIN

OPEN outputcursor FOR
select * from factordata where groupid = groupid_in;

RETURN outputcursor;
END;
$$ LANGUAGE plpgsql;

cheers.
Marc

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Craig Ringer 2010-04-07 04:34:07 Re: "1-Click" installer problems
Previous Message Alban Hertroys 2010-04-06 23:39:55 Re: can't connect to server on localhost