index 4783807ae04361af54b8cc54a9b13432161217df..4f9501db00877494039b95b439adc5a6bb9337ca 100644 (file)
--
create table rc_test (a int, b int);
copy rc_test from stdin;
+create function return_unnamed_refcursor() returns refcursor as $$
+declare
+ rc refcursor;
+begin
+ open rc for select a from rc_test;
+ return rc;
+end
+$$ language plpgsql;
+create function use_refcursor(rc refcursor) returns int as $$
+declare
+ rc refcursor;
+ x record;
+begin
+ rc := return_unnamed_refcursor();
+ fetch next from rc into x;
+ return x.a;
+end
+$$ language plpgsql;
+select use_refcursor(return_unnamed_refcursor());
+ use_refcursor
+---------------
+ 5
+(1 row)
+
create function return_refcursor(rc refcursor) returns refcursor as $$
begin
open rc for select a from rc_test;
index 768270d46765c8afe105a6694898ae13431103c7..3914651bf6d2505375faf3da26838f6636db42d2 100644 (file)
500 1000
\.
+create function return_unnamed_refcursor() returns refcursor as $$
+declare
+ rc refcursor;
+begin
+ open rc for select a from rc_test;
+ return rc;
+end
+$$ language plpgsql;
+
+create function use_refcursor(rc refcursor) returns int as $$
+declare
+ rc refcursor;
+ x record;
+begin
+ rc := return_unnamed_refcursor();
+ fetch next from rc into x;
+ return x.a;
+end
+$$ language plpgsql;
+
+select use_refcursor(return_unnamed_refcursor());
+
create function return_refcursor(rc refcursor) returns refcursor as $$
begin
open rc for select a from rc_test;