您可以使用 multiset 运算符和转换数据为 employee_ct 。这段代码块对我有用:
multiset
employee_ct
declare v_department_ct department_ct; begin select department_ot(ev1.department_id, cast(multiset(select employee_ot(ev2.employee_id,ev2.first_name, ev2.last_name) from emp_details_view ev2 where ev2.department_id = ev1.department_id ) as employee_ct)) bulk collect into v_department_ct from emp_details_view ev1 group by department_id; end;
我的测试数据:
create table emp_details_view (department_id, employee_id, first_name, last_name) as ( select 1, 101, 'A', 'A' from dual union all select 1, 102, 'B', 'B' from dual union all select 2, 201, 'X', 'X' from dual )