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

Jak sprawić, by opakowanie zwracało coś innego niż kursor ref

Możesz użyć funkcji potoku, aby zwrócić zestaw wyników po jednym rekordzie na raz, ale w sposób zrozumiały dla silnika 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;
/

Korzystając z tego pakietu, możesz wybrać kursor referencyjny:

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. ActiveMQ 5.8:Nie można załadować klasy sterownika JDBC „oracle.jdbc.driver.OracleDriver”

  2. Liczba piątków między dwiema datami

  3. if(warunek, to inaczej) w Oracle

  4. Wykonanie natychmiastowe kończy się niepowodzeniem, nawet przy CREATE table grant

  5. Wyszukiwanie bez rozróżniania wielkości liter w Oracle