PL / SQL:从函数返回sys_refcursor /由另一个函数替换动态请求

时间:2013-07-23 08:46:51

标签: plsql oracle11g

我的功能就是这个:

CREATE OR REPLACE FUNCTION replaceRequest(mysql IN varchar2)
RETURN SYS_REFCURSOR IS
opt SYS_REFCURSOR;
BEGIN
open opt for select * from rteuti;
return opt;
END replaceRequest;
/

我的电话:

select replaceRequest('foo') from dual;

我希望此请求会将结果返回给我:

select * from rteuti

这确实不是真实的情况,但这个简单的案例足以指出我的问题。我想在不知道列数的情况下用另一个替换查询(列数是真实函数中的参数,我设法生成我想要的查询)。

在我的实际Oracle PLSQL知识中,SYS_REFCURSOR是返回看起来像查询结果的东西的唯一方法(事先不知道列数)。

但是在行动中,它在我的Squirrel客户端或通过Java JDBC失败了ERROR。我只有一行,其中一列有“错误”

在PgPL / SQL中,可以这样做。我很兴奋,我无法用甲骨文做到这一点。

PS:通过更多的研究,我发现SYS_REFCURSOR是ResultSET上的指针,而不是结果集。有没有办法返回结果集或修改我的选择以得到结果集?

0 个答案:

没有答案