Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

gọi các thủ tục được lưu trữ của Oracle trong R - làm thế nào để lấy tập kết quả?

Tôi không thể giúp bạn cụ thể với R, nhưng bạn nói rằng bạn đang gặp sự cố khi gọi các thủ tục Oracle sử dụng tham số OUT làm sys_refcursors. Bạn cũng cho biết khả năng này có thể chưa được thực hiện. Tuy nhiên, bạn nói rằng bạn có thể "chọn các cột từ bảng".

Vì vậy, tôi đề xuất thay đổi các thủ tục thành các lệnh gọi hàm pipelined, và sau đó thực hiện một lựa chọn đơn giản để lấy dữ liệu của bạn từ Oracle. Một ví dụ nhỏ:

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;

Nội dung gói:

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;

Cách sử dụng:

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

Hoặc:

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

Điều này sẽ trả về 3 hàng dữ liệu, giống như một thủ tục sẽ trả về cùng một dữ liệu. Chỉ bằng cách này, bạn có thể lấy nó từ một câu lệnh chọn (mà bạn dường như có thể xử lý từ R).

Hy vọng điều đó sẽ hữu ích.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 12c Kế hoạch thích ứng trong nhà phát triển SQL

  2. Cách thay đổi định dạng ngày trong phiên Oracle của bạn

  3. Oracle Nhìn về phía sau Tích cực

  4. tạo tập lệnh SQL

  5. ORACLE SQL:Điền vào các ngày còn thiếu