【发布时间】:2019-11-06 13:07:47
【问题描述】:
假设我们有常用的 Oracle 员工和部门表。
我还有一些 Oracle 对象类型:
- TEmployee:一种对象类型,其成员与员工表中的字段相同。
- TEmployeeList:TEmployee的对象表。
- TDepartment:一种对象类型,其成员与表部门中的字段相同。
- TDepartment 还有一个类型为 TEmployeeList 的成员“员工”。 TDepartmentList:TDepartment的对象表。
现在我想在一个查询中批量收集多个部门及其员工。
我知道如何批量收集没有员工的部门:
DECLARE
departmentList TDepartmentList;
BEGIN
SELECT TDepartment(dept.id, dept.name)
BULK COLLECT INTO departmentList
FROM departments dept
WHERE <some condition>;
END;
但是如何在同一个查询中收集所选部门的员工呢?
类似
DECLARE
departmentList TDepartmentList;
BEGIN
SELECT TDepartment(dept.id, dept.name,
SELECT TEmployee(emp.id, emp.name)
FROM Employees
WHERE emp.deptId = dept.id
)
BULK COLLECT INTO departmentList
FROM departments dept
WHERE <some condition>;
END;
【问题讨论】: