Saya tidak dapat membantu Anda secara khusus dengan R, tetapi Anda mengatakan Anda mengalami masalah dalam memanggil prosedur Oracle yang menggunakan params OUT sebagai sys_refcursors. Anda juga menunjukkan kemampuan ini mungkin belum diterapkan. Namun, Anda mengatakan bahwa Anda dapat "memilih kolom dari tabel" dengan baik.
Jadi, saya mengusulkan untuk mengubah prosedur menjadi panggilan fungsi yang disalurkan, dan kemudian melakukan pemilihan sederhana untuk mendapatkan data Anda dari Oracle. Contoh kecil:
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;
Isi paket:
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;
Penggunaan:
select * from table(pkg1.get_recs(3));
Atau:
select num, val from table(pkg1.get_recs(3));
Ini akan mengembalikan 3 baris data, sama seperti prosedur akan mengembalikan data yang sama. Hanya dengan cara ini Anda bisa mendapatkannya dari pernyataan pilih (yang tampaknya dapat Anda tangani dari R).
Semoga membantu.