假设我们有通常的 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;