Показать результат в табличном виде через функцию в Oracle
Как то раз необходимо было создать такой запрос, чтобы при его вызове с определнными параметрами был выведен результат в табличном виде. Данные в таблице всегда меняются из за многочиленных факторов. И все это дело необходимо было передать клиенту.
Вот примерный вызов функции
SELECT * FROM table(grafik.get_ups('123321321548'));
Вывод будет примерно таким
ID | NAME | SUM | DATE_ADD |
1 | TEST | 50000 | 01.01.2016 |
Ну чтож приступим к реализации.
Создаем Package с именем grafik
SPEC
create or replace package grafik is
TYPE measure_record IS RECORD(
id integer,
name varchar2(100),
sum number,
date_add date
);
TYPE measure_table IS TABLE OF measure_record;
FUNCTION get_ups(t number) RETURN measure_table PIPELINED;
end grafik;
BODY
create or replace package body grafik is
FUNCTION get_ups(cnc number) RETURN measure_table PIPELINED IS
BEGIN
for i in(
select id, name, sum, date_add from dual
loop
--Здесь нужно вписать определенные функции или действия
PIPE ROW (i); --Вносим данные
end loop;
end if;
RETURN;
END get_ups;
end grafik;
Конечно все что описано выше на 5+ не тянет. Это урезанная функция. На самом деле в теле пакета код на 3000 строчек у меня растянут и писать его сюда нету смысла. Это примерный показ реализации.