Oracle
 sql >> Baza danych >  >> RDS >> Oracle

wywoływanie procedur składowanych Oracle w R - jak uzyskać zestaw wyników?

Nie mogę ci pomóc konkretnie z R, ale mówisz, że masz problemy z wywoływaniem procedur Oracle, które używają parametrów OUT jako sys_refcursors. Wskazujesz również, że ta umiejętność może nie zostać jeszcze zaimplementowana. Mówisz jednak, że możesz „wybrać kolumny z tabeli” w porządku.

Proponuję więc zmianę procedur na wywołania funkcji potokowych, a następnie wykonanie prostego wyboru, aby uzyskać dane z Oracle. Mały przykład:

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;

Treść pakietu:

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;

Użycie:

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

Lub:

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

Zwróci to 3 wiersze danych, tak jak procedura zwróci te same dane. Tylko w ten sposób możesz uzyskać to z instrukcji select (którą wydajesz się być w stanie obsłużyć z R).

Mam nadzieję, że to pomoże.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błąd:ORA-00955:nazwa jest już używana przez istniejący obiekt w funkcji Oracle

  2. Aktualizowanie wiersza z podzapytaniem zwracającym wiele wierszy

  3. ORA-04061:istniejący stan treści pakietu PACKAGE.NAME został unieważniony utrzymuje się

  4. Jak zrobić Oracle TNSPING z java?

  5. org.hibernate.Query .iterate() VS .getResultList() generowanie zapytań