我有一个程序,它返回SYS_REFCURSOR
作为OUT
参数。我想做的是调用该过程,并在另一个过程中使用返回的SYS_REFCURSOR
。在第二个过程中,我需要对结果运行GROUP BY
,然后将其返回到另一个SYS_REFCURSOR
。
我遇到的问题是我事先不知道列的名称或数量。
有没有人对解决方案有任何想法?提前谢谢。
答案 0 :(得分:2)
实际上,你可以做到这一点,但它需要一些努力,而且在大多数情况下它只是矫枉过正。
方法是下一步骤:
简单的例子,说明这个想法:
select EMPNO, count(*) from
xmltable(
‘/ROWSET/ROW’
PASSING xmltype(CURSOR( SELECT E.EMPNO, E.ENAME, D.DNAME, D.DEPTNO FROM SCOTT.EMP E, SCOTT.DEPT D WHERE e.deptno=D.DEPTNO ))
columns
EMPNO PATH ‘EMPNO’,
ENAME PATH ‘ENAME’,
DNAME PATH ‘DNAME’ ,
DEPTNO PATH ‘DEPTNO’
)
group by EMPNO