Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

memanggil prosedur tersimpan Oracle di R - bagaimana cara mendapatkan hasil yang ditetapkan?

Saya tidak dapat membantu Anda secara khusus dengan R, tetapi Anda mengatakan Anda mengalami masalah dalam memanggil prosedur Oracle yang menggunakan params OUT sebagai sys_refcursors. Anda juga menunjukkan kemampuan ini mungkin belum diterapkan. Namun, Anda mengatakan bahwa Anda dapat "memilih kolom dari tabel" dengan baik.

Jadi, saya mengusulkan untuk mengubah prosedur menjadi panggilan fungsi yang disalurkan, dan kemudian melakukan pemilihan sederhana untuk mendapatkan data Anda dari Oracle. Contoh kecil:

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;

Isi paket:

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;

Penggunaan:

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

Atau:

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

Ini akan mengembalikan 3 baris data, sama seperti prosedur akan mengembalikan data yang sama. Hanya dengan cara ini Anda bisa mendapatkannya dari pernyataan pilih (yang tampaknya dapat Anda tangani dari R).

Semoga membantu.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle PLSQL mengembalikan satu tipe baris

  2. Bagaimana cara menyimpan file TIFF di Oracle?

  3. Fungsi tidur di ORACLE

  4. Di PL/SQL, ambil tabel sebagai parameter, filter dan kembalikan

  5. Aplikasi VB6 koneksi oracle 12 64bit