sql >> データベース >  >> RDS >> Oracle

参照カーソル以外のものを返すラッパーを作成する方法

    パイプライン関数を使用して、一度に1レコードずつ結果セットを返すことができますが、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. ifが存在する場合のSQL構文

    2. MariaDB SYSTEM_USER()の説明

    3. PostgresQLですべての無効なオブジェクトを表示する方法

    4. AndroidでSqLiteデータベースをリセットする方法は?