Hello
you can use a refcursor type
http://developer.postgresql.org/pgdocs/postgres/plpgsql-cursors.html
Regards
Pavel Stehule
2011/8/18 Kidd, David M d.k...@imperial.ac.uk:
Hi,
I am trying to write a function that contains a cursor and iteratively calls
itself.
It is along the lines of,
CREATE FUNCTON test(id integer) RETURNS TEXT AS
$BODY$
DECLARE
mycursor CURSOR FOR SELECT * FROM myfunction(id);
newid INTEGER;
out = TEXT;
BEGIN
out := '';
OPEN mycursor;
LOOP
FETCH my_cursor INTO newid;
out := out || test (newid);
END LOOP;
RETURN out;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
This returns an ERROR stating that mycursor is already in use.
I understand this occurs because cursor names must be unique across, as well
as within, functions.
So, my question is whether there is a way I can dynamically declare a cursor
name, for example by appending a incremental number or guid to make the name
unique?
Just trying to concatenate two passed arguments in the DECLARE statement
unsurprisingly fails.
Any other solutions are of cause welcome.
Many thanks,
- David
David M. Kidd
Research Associate
Center for Population Biology
Silwood Park Campus
Imperial College London
0207 594 2470
--
Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-sql