sql >> Database >  >> RDS >> Oracle

aanroepen van Oracle opgeslagen procedures in R - hoe de resultatenset te krijgen?

Ik kan je niet specifiek helpen met R, maar je zegt dat je problemen hebt met het aanroepen van Oracle-procedures die OUT-params gebruiken als sys_refcursors. Je geeft ook aan dat deze mogelijkheid mogelijk nog niet geïmplementeerd is. U zegt echter dat u prima "kolommen uit tabel kunt selecteren".

Dus stel ik voor om de procedures te wijzigen in gepijplijnde functieaanroepen en vervolgens een eenvoudige selectie te doen om uw gegevens van Oracle te krijgen. Een klein voorbeeld:

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;

Het pakket lichaam:

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;

Gebruik:

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

Of:

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

Dit zou 3 rijen met gegevens retourneren, net zoals een procedure dezelfde gegevens zou retourneren. Alleen op deze manier kun je het uit een select statement halen (wat je vanuit R lijkt te kunnen afhandelen).

Ik hoop dat dat helpt.




  1. Oracle LISTAGG() voor meerdere attributen?

  2. Een RESTful API gebruiken voor dynamische websites

  3. MySQL RAND() Functie – Genereer een willekeurig getal in MySQL

  4. Msql:groei in de loop van de tijd tellen