Types 具有包含嵌套表的类型的构造

Types 具有包含嵌套表的类型的构造,types,plsql,Types,Plsql,我有一个类型,它包含一个接受数组的构造函数。我想构建一个这种类型的数组,同时在子数组中输入 例如 create type child as object ( name varchar2(10) ); / create type children as table of child; / create type parent as object ( name varchar2(10), my_children children ); / create type parent

我有一个类型,它包含一个接受数组的构造函数。我想构建一个这种类型的数组,同时在子数组中输入

例如

create type child as object
(
    name varchar2(10)
);
/
create type children as table of child;
/
create type parent as object
(
    name varchar2(10),
    my_children children
);
/
create type parents as table of parent;
/
create table child_table
(
    parent_name varchar2(10),
    child_name varchar2(10)
);
/
create table parent_table 
(
    name varchar2(10)
);
/
declare
    l_parents parents;
begin
    select parent(p.name, (select child(c.child_name) from child_table where parent_name = p.name))
    bulk collect into l_parents
    from parent_table p;
end;

第四行到最后一行选择parentp.name。。。。只是伪代码,正是我遇到麻烦的代码。

尝试以下方法:

SELECT parent(p.name,
              CAST((SELECT COLLECT (child(c.child_name))
                      FROM child_table c
                     WHERE parent_name = p.name
                   ) AS children
                  )
             )
  BULK COLLECT INTO  l_parents
  FROM parent_table p;

请你对你的回答再解释一下好吗?只有代码的答案是不赞成这样做的。
declare
    l_parents parents;
begin
    select parent(p.name,  cast(multiset(select c.child_name from child_table c where parent_name = p.name)as children))
    bulk collect into l_parents
    from parent_table p;
end;