Я пытаюсь написать процедуру хранения с приведенным ниже примером использования и таблицами,
Employee<br>
Emp_id Emp_Name
1 Jhon
2 Mark
3 Marry
Department<br>
Emp_Id Dept_Id
1 A
2 B
3 C
1 B
2 D
Assets
Emp_Id Asset_Name
1 AA
1 BB
2 CC
2 DD
4 EE
4 FF
Отношения
Один сотрудник может быть добавлен в несколько отделов.
например, Emp 1 добавлен в отделы A и B.
Один сотрудник может иметь более одного актива
например, Эмпел 1, имеющий активы AA и BB.
Нет ограничений по внешнему ключу между сотрудником и активами.
Таким образом, у активов может быть значение EmpId, которого нет в таблице сотрудников.
например, Emp 4
Желаемый выход
EmployeeInfo
Emd_Id
Emp_Name
Array of Dept_Id[]
Array of Assets[]
Желаемый результат для сотрудника Id 1
Emd_Id :1
Emp_Name :Jhon
Array of Dept_Id[] :[A,B]
Array of Assets[] :[AA,BB]
Желаемый результат для сотрудника Id 4
Emd_Id :4
Emp_Name :null -- As no entry in Employee table.
Array of Dept_Id[] :null
Array of Assets[] :[EE,FF]
Итак, напишите процедуру хранения для этого. Пожалуйста, предложите решение для этого.
Или это может быть достигнуто с помощью нескольких курсоров или переменных типа объекта?
Хранимая процедура, которую я пробовал, как показано ниже,
CREATE OR REPLACE PROCEDURE PRC_TEST(
employeeInfo OUT SYS_REFCURSOR)
IS
BEGIN
OPEN employeeInfo FOR
SELECT e.EMP_ID ,e.EMP_NAME,
d.DEPT_ID,
a.ASSET_NAME
FROM EMPLOYEE e, DEPARTMENT d, ASSETS a
WHERE
e.EMP_ID = d.EMP_ID
AND e.EMP_ID = a.EMP_ID;
END;
Заранее спасибо