我不能专门用R来帮助你,但你说你在调用使用OUT params作为sys_refcursors的Oracle程序时遇到了问题.您还表明此功能可能尚未实施.但是,你可以说,你可以“从表中选择列”就好了.
因此,我建议将过程更改为流水线函数调用,然后进行简单的选择以从Oracle获取数据.一个小例子:
CREATE OR REPLACE package pkg1 as
type t_my_rec is record
(
num my_table.num%type,val my_table.val%type
);
type t_my_tab is table of t_my_rec;
function get_recs(i_rownum in number)
return t_my_tab
pipelined;
END pkg1;
包体:
create or replace package body pkg1 as
function get_recs(i_rownum in number)
return t_my_tab
pipelined
IS
my_rec t_my_rec;
begin
-- get some data
-- implement same business logic as in procedure
for my_rec in (select num,val from my_table where rownum <= i_rownum)
loop
pipe row(my_rec);
end loop;
return;
end get_recs;
end pkg1;
select * from table(pkg1.get_recs(3));
要么:
select num,val from table(pkg1.get_recs(3));
这将返回3行数据,就像过程将返回相同的数据一样.只有这样你才能从select语句中获得它(你似乎能够从R处理它).
希望有所帮助.