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; + + + The following example lets you return multiple cursors from a + single function. + + + 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; + +