aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/test/regress/expected/plpgsql.out24
-rw-r--r--src/test/regress/sql/plpgsql.sql22
2 files changed, 46 insertions, 0 deletions
diff --git a/src/test/regress/expected/plpgsql.out b/src/test/regress/expected/plpgsql.out
index 4783807ae04..4f9501db008 100644
--- a/src/test/regress/expected/plpgsql.out
+++ b/src/test/regress/expected/plpgsql.out
@@ -2242,6 +2242,30 @@ drop function sp_id_user(text);
--
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;
diff --git a/src/test/regress/sql/plpgsql.sql b/src/test/regress/sql/plpgsql.sql
index 768270d4676..3914651bf6d 100644
--- a/src/test/regress/sql/plpgsql.sql
+++ b/src/test/regress/sql/plpgsql.sql
@@ -1910,6 +1910,28 @@ copy rc_test from stdin;
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;