Функции Oracle, возвращающие таблицу
Создадим две таблицы - сотрудников и подразделений.
Для начала нам нужно описать тип данных, возвращаемый таблицей.
Создадим две таблицы - сотрудников и подразделений.
create table ALEX.T_EMPLOYEES( id number(5) not null, id_department number(5) not null, empinfo nvarchar2(50) not null ) ; create table ALEX.T_DEPARTMENTS( id number(5) not null, depinfo nvarchar2(50) not null );Цель - написать функцию, которая бы возвращала список сотрудников отдела, id которого передается в качестве параметра.
Для начала нам нужно описать тип данных, возвращаемый таблицей.
--тип данных строки, возвращаемой GetEmployees type rowGetEmployees is record( l_empinfo ALEX.T_EMPLOYEES.EMPINFO%TYPE, l_depinfo ALEX.T_DEPARTMENTS.DEPINFO%TYPE );Это тип данных строки. Создаем второй тип:
type tblGetEmployees is table of rowGetEmployees;Это тип таблицы строк типа rowGetEmployees. Функция:
function GetEmployees (prm_depID number default null) return tblGetEmployees pipelined is begin for curr in ( select emp.empinfo, dep.depinfo from ALEX.T_DEPARTMENTS dep inner join ALEX.T_EMPLOYEES emp on dep.id = emp.id_department where dep.id = prm_depID ) loop pipe row (curr); end loop; end GetEmployees;Применение:
SQL> select * from TABLE(ALEX.P_MY1.GetEmployees(1)); L_EMPINFO L_DEPINFO --------------------------------------------------- Иванов ----------------- Отдел кадров Борисов ----------------- Отдел кадров
Комментариев нет :
Отправить комментарий