sql >> Database >  >> RDS >> Oracle

Hoe maak je een wrapper om iets anders terug te geven dan ref cursor

U kunt een pijplijnfunctie gebruiken om een ​​resultaatset met één record tegelijk te retourneren, maar op een manier die de SQL-engine kan begrijpen.

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;
/

Met dit pakket kunt u uw ref-cursor selecteren:

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



  1. De werkelijke (absolute) uitvoeringstijd van de laatste query in PHP verkrijgen (exclusief netwerklatentie, enz.)

  2. Krijg een lijst met alle null- en niet-null-kolommen in SQL Server-database - SQL Server / T-SQL-zelfstudie, deel 53

  3. Hoe twee tabellen in één instructie in SQL Server 2005 bij te werken?

  4. Tel hoofdletters in String