Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Кастомный record из select  [new]
я
Guest
предположим есть некий select из 2-х таблиц:

select * from t1 join t2 ... 


хочется написать функцию в составе пакета, чтобы она отдавала некий набор полей из этой выборки ( не все поля ). Пока в голову пришло вот это:
CREATE OR REPLACE PACKAGE test AS
  TYPE t_ptf_row IS RECORD (
    id           NUMBER,
    description  VARCHAR2(50),
    country  VARCHAR2(50)
  );
  TYPE t_ptf_tab IS TABLE OF t_ptf_row;

  FUNCTION get_tab_ptf  RETURN t_ptf_tab PIPELINED;
END;


CREATE OR REPLACE PACKAGE BODY test AS
  FUNCTION get_tab_ptf () RETURN t_ptf_tab PIPELINED IS
    l_row  t_ptf_row;
    tst   blog%ROWTYPE;
    CURSOR c1 IS select * FROM blog;
  BEGIN
    FOR e_rec IN c1 LOOP
      l_row.description := e_rec.description;
      l_row.country := e_rec.country;
      PIPE ROW (l_row);
    END LOOP;
    RETURN;
  END;
END;


но решение явно кривое. Есть ли более простое ?
10 июл 14, 00:45    [16284098]     Ответить | Цитировать Сообщить модератору
 Re: Кастомный record из select  [new]
SergINI
Member

Откуда: Нью-Васюки
Сообщений: 6787
я
хочется написать функцию в составе пакета, чтобы она отдавала некий набор полей из этой выборки ( не все поля ). Пока в голову пришло вот это:

Гоните это всё из головы. ANSI SQL, потом лукавого от безисходности!
10 июл 14, 00:53    [16284120]     Ответить | Цитировать Сообщить модератору
 Re: Кастомный record из select  [new]
Изя Кацман
Member

Откуда: Великий Эксперимент
Сообщений: 2019
я
предположим есть некий select из 2-х таблиц:
select * from t1 join t2 ... 

хочется написать функцию в составе пакета, чтобы она отдавала некий набор полей из этой выборки ( не все поля ).

но решение явно кривое. Есть ли более простое ?

Решение кривущее, ты прав, камрад

Напиши набор нужных полей через запятую после слова SELECT вместо звездочки - ето будет отличное изящное решение!

Все PIPLINED в печку - не пользуй их без самой крайней нужды, которую может вызвать только лень подумать и почитать :(
10 июл 14, 01:41    [16284224]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить