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

Reply via email to