On Wed, Jan 12, 2005 at 09:33:30PM -0800, David Fetter wrote:
> 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 :)

Oops.  Joe Conway pointed out that this patch could be more succinct
and not create an essentially useless new type.

Please find attached the revised patch.

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 17:21:19 -0000
***************
*** 2306,2311 ****
--- 2306,2339 ----
  COMMIT;
  </programlisting>
         </para>
+ 
+        <para>
+         The following example lets you return multiple cursors from a
+ single function.
+ 
+ <programlisting>
+ CREATE OR REPLACE FUNCTION myfunc(refcursor, refcursor)
+ RETURNS SETOF refcursor
+ LANGUAGE plpgsql
+ AS $$
+ BEGIN
+     OPEN $1 FOR SELECT 1;
+     RETURN NEXT $1;
+     OPEN $2 FOR SELECT 2;
+     RETURN NEXT $2;
+     RETURN;
+ END;
+ $$;
+ 
+ -- need to be in a transaction to use cursors.
+ BEGIN;
+ 
+ SELECT * FROM myfunc('a', 'b');
+ 
+ FETCH ALL FROM a;
+ FETCH ALL FROM b;
+ </programlisting>
+        </para>
       </sect3>
     </sect2>
    </sect1>
---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?

               http://www.postgresql.org/docs/faqs/FAQ.html

Reply via email to