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

Как да направите обвивка, която да връща нещо различно от референтен курсор

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

create or replace package WrapperSample is

  type TResultRow is record(
     if_type         codes.cd%type
    ,number_infected Integer);

  type TResultRowList is table of TResultRow;

  function GetADedIcWarningsProv
  (
    p_hos_id in work_entity_data.hos_id%type
   ,p_date   in date
  ) return TResultRowList
    pipelined;

end WrapperSample;
/

create or replace package body WrapperSample is

  function GetADedIcWarningsProv
  (
    p_hos_id in work_entity_data.hos_id%type
   ,p_date   in date
  ) return TResultRowList
    pipelined is
    v_refcur   eOdatatypes_package.eOrefcur;
    currentRow TResultRow;
  begin
    v_refcur := YourSchema.getADedIcWarningsProv(p_hos_id, p_date);

    loop
      fetch v_refcur
        INTO currentRow;
      exit when v_refcur%NotFound;
      pipe row(currentRow);
    end loop;

    close v_refcur;

    return;
  end;

end WrapperSample;
/

Използвайки този пакет, можете да изберете вашия референтен курсор:

SELECT if_type
      ,number_infected
FROM table(WrapperSample.getADedIcWarningsProv(1, 2))



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Създайте потребител от низови променливи в PL/SQL блок

  2. Активиране на SSL или TLS в Oracle Apps R12

  3. Предотвратяване на отпадане на таблица в целева схема в Oracle Streams

  4. Oracle SQL -- премахване на частичен дубликат от низ

  5. MySQL еквивалент на ORACLES rank()