PL SQL Как положить много оберток в один пакет - PullRequest
0 голосов
/ 18 января 2011

ссылка: Как сделать обертку, которая будет возвращать что-то отличное от ref курсора

У меня есть много упакованных функций, похожих на приведенную ниже, только они возвращают разные столбцыкурс.Как я могу положить их все в одной упаковке.потому что в приведенных ниже примерах каждый раз заменяется мой пакет-обертка.

Я хочу знать, как удалить глобальные объявления сверху, чтобы я мог добавить множество в одном пакете, каждый с разными возвращаемыми столбцами

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

1 Ответ

4 голосов
/ 18 января 2011

вы бы использовали одно определение записи и одно определение таблицы для каждого набора столбцов.

create or replace package WrapperSample is

  type R_WarningsProv is record(/*...*/);

  type T_WarningsProv is table of R_WarningsProv ;

  function GetADedIcWarningsProv(/*...*/) return T_WarningsProv pipelined;

  type R_OtherFunction is record(/*...*/);

  type T_OtherFunction is table of R_OtherFunction ;

  function OtherFunction(/*...*/) return T_OtherFunction pipelined;

  /* Multiple functions can use the same types as long as 
     they share the same column definition */

  function SomeOtherFunction(/*...*/) return T_OtherFunction pipelined;

end WrapperSample;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...