sql >> Database teknologi >  >> RDS >> Oracle

kalder Oracles lagrede procedurer i R - hvordan får man resultatet sat?

Jeg kan ikke hjælpe dig specifikt med R, men du siger, at du har problemer med at kalde Oracle-procedurer, der bruger OUT-parametre som sys_refcursors. Du angiver også, at denne evne muligvis ikke er implementeret endnu. Du siger dog, at du fint kan "vælge kolonner fra tabel".

Så jeg foreslår at ændre procedurerne til pipelinede funktionskald og derefter foretage et simpelt valg for at hente dine data fra Oracle. Et lille eksempel:

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;

Pakkens krop:

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;

Brug:

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

Eller:

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

Dette ville returnere 3 rækker data, ligesom en procedure ville returnere de samme data. Kun på denne måde kan du få det fra et udvalgt udsagn (som du ser ud til at kunne håndtere fra R).

Håber det hjælper.




  1. MySQL- Wamp-serveren fungerer ikke efter win10-opgradering

  2. Eksporter mine analysedata og læg dem i en database

  3. Bruger du cassandra i stedet for memcache?

  4. MySQL-forespørgsel - indre joinforbindelse ved kun at bruge den seneste version af en post