Cursor_Fetch_MultipleTable1
 

Script :

DROP TABLE table_pgsql2;
CREATE TABLE table_pgsql2 (col text);
INSERT INTO table_pgsql2 VALUES ('Delhi');
INSERT INTO table_pgsql2 VALUES ('Chicago');
INSERT INTO table_pgsql2 VALUES ('Austin');
INSERT INTO table_pgsql2 VALUES ('Kolkata');
INSERT INTO table_pgsql2 VALUES ('Ontario');

CREATE or replace FUNCTION func_refcursor2(refcursor, refcursor, refcursor) RETURNS SETOF refcursor AS $$
BEGIN
OPEN $1 FOR SELECT * FROM table_pgsql1;
RETURN NEXT $1;
OPEN $2 FOR SELECT * FROM table_pgsql2;
RETURN NEXT $2;
OPEN $3 FOR SELECT ename FROM emp;
RETURN NEXT $3;

END;
$$LANGUAGE plpgsql;

These record sets can now be acccsed one at a time with Hetch statment

SELECT * FROM func_refcursor2('rc1', 'rc2', 'rc3'); FETCH 3 FROM rc1; FETCH 3 FROM rc2; FETCH 3 FROM rc3;