Folks,
Please find attached an example that allows people to return multiple
named refcursors from a function. Big kudos to Kris Jurka for
figuring this out and pasting to rafb :)
Cheers,
D
--
David Fetter [EMAIL PROTECTED] http://fetter.org/
phone: +1 510 893 6100 mobile: +1 415 235 3778
Remember to vote!
Index: doc/src/sgml/plpgsql.sgml
===================================================================
RCS file: /projects/cvsroot/pgsql/doc/src/sgml/plpgsql.sgml,v
retrieving revision 1.55
diff -c -r1.55 plpgsql.sgml
*** doc/src/sgml/plpgsql.sgml 8 Jan 2005 22:13:34 -0000 1.55
--- doc/src/sgml/plpgsql.sgml 13 Jan 2005 05:27:46 -0000
***************
*** 2306,2311 ****
--- 2306,2339 ----
COMMIT;
</programlisting>
</para>
+
+ <para>
+ The following example lets you return multiple cursors from a
+ single function.
+
+ <programlisting>
+ CREATE TYPE multref AS (a refcursor, b refcursor);
+
+ CREATE OR REPLACE FUNCTION myfunc(result multref)
+ RETURNS multref
+ LANGUAGE plpgsql
+ AS $$
+ BEGIN
+ OPEN result.a FOR SELECT 1;
+ OPEN result.b FOR SELECT 2;
+ RETURN result;
+ END;
+ $$;
+
+ -- need to be in a transaction to use cursors.
+ BEGIN;
+
+ SELECT * FROM myfunc(ROW('a', 'b'));
+
+ FETCH ALL FROM a;
+ FETCH ALL FROM b;
+ </programlisting>
+ </para>
</sect3>
</sect2>
</sect1>
---------------------------(end of broadcast)---------------------------
TIP 7: don't forget to increase your free space map settings