如何使用单个SYS_REFCURSOR从Oracle存储过程返回多个Recordset

时间:2014-08-13 18:00:51

标签: oracle stored-procedures oracle11g recordset

在Oracle存储过程中是否可以使用单个游标返回多个记录集?

考虑一个Oracle程序

create or replace PROCEDURE MyProc (p_recordset OUT SYS_REFCURSOR) AS 
BEGIN 
OPEN p_recordset FOR
  SELECT EMPLOYEE_ID, FIRST_NAME FROM HR.EMPLOYEES;
  SELECT DEPARTMENT_NAME from HR.DEPARTMENTS;
END MyProc;

我知道上面的代码不起作用(或者可能是愚蠢的),并且我们可以使用2个引用光标分别返回记录集,但这不是我需要的。

另外我知道上面的MSSQL服务器是可行的。我们有什么方法可以在Oracle中实现这一目标吗?

注意:如果管理员将此标记为重复,请分享已经回答的链接

1 个答案:

答案 0 :(得分:0)

作为一个(相当愚蠢的)解决方法,你可以做到这一点:

OPEN p_recordset FOR
  SELECT EMPLOYEE_ID, FIRST_NAME, NULL AS DEPARTMENT_NAME FROM HR.EMPLOYEES
  UNION ALL
  SELECT NULL, NULL, DEPARTMENT_NAME from HR.DEPARTMENTS;