如何创建集合为attrubute的Oracle对象类型集合为attrubute的对象类型

如何创建集合为attrubute的Oracle对象类型集合为attrubute的对象类型,oracle,object,plsql,Oracle,Object,Plsql,在oracle数据库中,我创建了类型 CREATE OR REPLACE TYPE DOSSIER_RESULT AS OBJECT ( id number, user_id number ) 然后我创建了这种类型的集合 CREATE OR REPLACE TYPE DOSSIER_RESULTS_ARRAY AS TABLE OF DOSSIER_RESULT 然后我在第一个类型定义中添加了一个属性,如下所示 CREATE OR REPLACE TYP

在oracle数据库中,我创建了类型

CREATE OR REPLACE TYPE DOSSIER_RESULT AS OBJECT
(
  id           number,
  user_id      number
)
然后我创建了这种类型的集合

CREATE OR REPLACE TYPE DOSSIER_RESULTS_ARRAY AS TABLE OF DOSSIER_RESULT
然后我在第一个类型定义中添加了一个属性,如下所示

CREATE OR REPLACE TYPE DOSSIER_RESULT AS OBJECT
(
  id           number,
  user_id      number,
  child        DOSSIER_RESULTS_ARRAY

)
但它编译时出错了

Error: PLS-00201: identifier 'DOSSIER_RESULTS_ARRAY' must be declared

问题是:如何创建包含此类对象集合的对象类型?

在具有对象类型的Oracle中不能这样做。您使用的是Oracle的哪个版本?在11gR2和12cR2中,抛出“ORA-02303:无法删除或替换类型为类型或表依赖项”,而不是PLS-00201。这是因为在更新类型档案结果之前,需要删除类型档案结果数组。然后-我们正在更新类型档案结果,编译它,然后编译类型档案结果_ARRAY@AlexPoole我使用Oracle11.2.0.3.0,我得到了与wamikWell相同的错误,是的,如果您删除表类型以避免ORA-02303,那么当您重新创建对象类型时,显然这将不存在。无论如何,在我看来,你不能这样做;即使您尝试强制执行,您也会得到
ORA-04055:中止:“档案库结果”与“档案库结果”形成了一个非参考相互依赖的循环
,反之亦然,这取决于您是否删除表类型。您可以使用子类型,但这不是一回事。也许你需要退一步,解释一下你的目标,以及你为什么要使用对象。