sql >> Databáze >  >> RDS >> Oracle

volání uložených procedur Oracle v R - jak získat sadu výsledků?

Nemohu vám konkrétně pomoci s R, ale říkáte, že máte problémy s voláním procedur Oracle, které používají parametry OUT jako sys_refcursors. Uvádíte také, že tato schopnost ještě nemusí být implementována. Říkáte však, že můžete v pohodě „vybrat sloupce z tabulky“.

Navrhuji tedy změnit procedury na zřetězená volání funkcí a poté jednoduchým výběrem získat data z Oracle. Malý příklad:

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;

Tělo balíčku:

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;

Použití:

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

Nebo:

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

To by vrátilo 3 řádky dat, stejně jako procedura vrátí stejná data. Pouze tímto způsobem jej můžete získat z příkazu select (který, jak se zdá, zvládáte z R).

Doufám, že to pomůže.




  1. PostgreSQL - Nebyly nalezeny žádné vztahy.

  2. Podporované modely formátů pro datové funkce ROUND() a TRUNC() v Oracle

  3. Výhody MySQLi oproti MySQL

  4. Alias ​​pro klauzuli GROUP BY?