如何使用单个SYS\u REFCURSOR从Oracle存储过程返回多个记录集

如何使用单个SYS\u REFCURSOR从Oracle存储过程返回多个记录集,oracle,stored-procedures,oracle11g,recordset,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 MyPro

在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中实现这一点

注意:如果管理员将此标记为重复,请共享已回答此问题的链接,作为(相当愚蠢的)解决方法,您可以执行以下操作:

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;

不,不能用一个游标执行此操作。是否有原因不能声明多个
OUT
参数?是的,我不能声明多个OUT参数(原因我无法披露)。另外,为什么会有“OracleDataReader.NextResult方法”?[@RR02-该链接似乎无效。通常,客户端应用程序处理
OUT
参数映射的数据库框架或多或少是透明的。我希望
NextResult
从下一个
OUT sys\u refcursor
参数开始提取。如果您被阻止声明多个ple
OUT
参数,您不能有多个结果集。您可以合并这两个结果(在确保返回两个结果中相同数量和类型的列后)但是,客户必须知道如何找出结果。@贾斯廷洞穴-感谢详细的响应。将尝试使用多个REF游标,并使用NeXPrimes方法实际发生什么……考虑您的评论投赞成票!)谢谢您的建议,但这不是我要找的。甚至加入工会和其他工作场所:)这正是我想要的