就像这样行不通
create FUNCTION getSomt RETURN sys_refcursor is
vResult sys_refcursor;
BEGIN
open vResult for
select 'Y' as field from dual;
return vResult;
END getSomt;
create FUNCTION doWork RETURN sys_refcursor is
vResult sys_refcursor;
BEGIN
open vResult for
select * from getSomt() where field = 'N';
return vResult;
END doWork;
也许是像使用批量收集?但我不知道该怎么做
2条答案
按热度按时间mu0hgdu01#
像这样:
测试:
[编辑,基于您的评论]
如果涉及到额外的逻辑,首先必须fetch到本地声明的变量中,处理结果,将其存储到另一个变量中(我选择了内置的
sys.odcivarchar2list
类型,因为它适合这种需要)并返回结果。第一个函数保持原样(我添加了另一行,字段值为
N
):doWork
显著改变:测试:
9w11ddsr2#
您可以使用
XMLTYPE
读取游标,然后使用XMLTABLE
解析它,并使用它生成另一个游标:然后你可以调用它使用:
其输出:
fiddle