我的功能是这个:
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 失败并出现错误。我只有一行一列带有“错误”
在 PgPL/SQL 中可以做到这一点。我很惊讶我不能用甲骨文做到这一点。
PS:通过更多研究,我发现 SYS_REFCURSOR 是 ResultSET 上的指针,而不是结果集。有没有办法返回结果集或修改我的选择以获得结果集?