Nie mogę ci pomóc konkretnie z R, ale mówisz, że masz problemy z wywoływaniem procedur Oracle, które używają parametrów OUT jako sys_refcursors. Wskazujesz również, że ta umiejętność może nie zostać jeszcze zaimplementowana. Mówisz jednak, że możesz „wybrać kolumny z tabeli” w porządku.
Proponuję więc zmianę procedur na wywołania funkcji potokowych, a następnie wykonanie prostego wyboru, aby uzyskać dane z Oracle. Mały przykład:
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;
Treść pakietu:
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;
Użycie:
select * from table(pkg1.get_recs(3));
Lub:
select num, val from table(pkg1.get_recs(3));
Zwróci to 3 wiersze danych, tak jak procedura zwróci te same dane. Tylko w ten sposób możesz uzyskać to z instrukcji select (którą wydajesz się być w stanie obsłużyć z R).
Mam nadzieję, że to pomoże.