最初的问题是只是一个名称不匹配,这是错误信息真的说的;行和位置指向单词relates
,ORA-00904告诉您它无效。您的property_t
类型定义为relatesTo ref appointment_t
,但在您的property_table
创建中,请参阅relates
,而不是relatesTo
。
但是,你似乎有一个类型不匹配。 appointment_t
是一个对象类型,不是表类型,所以嵌套表子句没有意义;你会得到ORA-22912: specified column or attribute is not a nested table type
。您似乎将某种对象类型与表格类型混淆在一起。
目前还不清楚您是希望将其作为单个对象类型的参考,还是约会表(或参考约会) - 我认为表可能更可能,正如您所期望的不同的视角为出售物业,在这种情况下,你需要一个额外的类型,预约表(?):
create or replace type appointment_tab_t as table of appointment_t
/
...或者因为你的原本有一个裁判预约单,如预约参考表格:
create or replace type appointment_tab_t as table of ref appointment_t
/
无论哪种方式你的property_t
类型将有:
..., relatesTo appointment_tab_t)
...那么你的表格将与创建:
Create table property_table of property_t(
property# Primary Key)
Nested table relatesTo store as relates_appoint_table;
Table property_table created.
SQL Fiddle demo(或with table of ref
)用一个虚构的预约类型。
的选择是离开property_t
因为你拥有了它与裁判预约单:
..., relatesTo ref appointment_t)
...拖放嵌套表子句:
Create table property_table of property_t(
property# Primary Key)
/
Table property_table created.
SQL Fiddle。
你可以发布你正在使用的实际代码吗?以上是无效的DDL。 – mmmmmpie 2015-02-10 13:39:58
肯定是一个散列标记'#'在SQL中无效,是吗? – 2015-02-10 13:40:38
嗨,这是我们正在使用的实际代码,并且已经用于以前的表创建, – 2015-02-10 13:41:11