Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

chamando procedimentos armazenados do Oracle em R - como obter o conjunto de resultados?


Não posso ajudá-lo especificamente com R, mas você diz que está tendo problemas ao chamar procedimentos Oracle que usam parâmetros OUT como sys_refcursors. Você também indica que essa habilidade pode não ser implementada ainda. Você diz, no entanto, que pode "selecionar colunas da tabela" muito bem.

Então, proponho alterar os procedimentos para chamadas de função em pipeline e, em seguida, fazer uma seleção simples para obter seus dados do Oracle. Um pequeno exemplo:
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;

O corpo do pacote:
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;

Uso:
select * from table(pkg1.get_recs(3));

Ou:
select num, val from table(pkg1.get_recs(3));

Isso retornaria 3 linhas de dados, assim como um procedimento retornaria os mesmos dados. Só assim você pode obtê-lo de uma instrução select (que parece ser capaz de lidar com R).

Espero que ajude.