Oracle
 sql >> база данни >  >> RDS >> Oracle

извикване на съхранени процедури на Oracle в R - как да получа набора от резултати?

Не мога да ви помогна конкретно с R, но казвате, че имате проблеми при извикването на процедури на Oracle, които използват OUT параметри като sys_refcursors. Вие също така посочвате, че тази възможност може все още да не е внедрена. Казвате обаче, че можете да „избирате колони от таблицата“ съвсем добре.

И така, предлагам да промените процедурите на конвейерни извиквания на функции и след това да направите прост избор, за да получите вашите данни от Oracle. Малък пример:

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;

Основният текст на пакета:

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;

Употреба:

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

Или:

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

Това ще върне 3 реда данни, точно както процедурата ще върне същите данни. Само по този начин можете да го получите от оператор select (с който изглежда можете да се справите от R).

Надявам се, че това помага.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Проблем с формата на Symfony + Doctrine Oracle DateTime

  2. Oracle - актуализира същата таблица, на която е задействан тригерът

  3. SQL Group By - броене на записи на месец/година, грешка при вмъкване - НЕ Е ВАЛИДЕН МЕСЕЦ

  4. Условен ред по клауза

  5. Извикайте съхранена процедура на oracle с изходен параметър на курсора от скрипт на python