2015-02-10 50 views
0

我正在创建一个表,我已经创建了各种成功编译的相同格式的表。Oracle SQL错误信息

这里是我想创建:

Create table property_table of property_t(
property# Primary Key) 
Nested table relates store as relates_appoint_table; 

和我收到以下错误信息:

 
Error starting at line 1 in command: 
Create table property_table of property_t(
property# Primary Key) 
Nested table relates store as relates_appoint_table 
Error at Command Line:3 Column:14 
Error report: 
SQL Error: ORA-00904: : invalid identifier 
00904. 00000 - "%s: invalid identifier" 
*Cause:  
*Action: 

希望有人在那里可以帮助

+0

你可以发布你正在使用的实际代码吗?以上是无效的DDL。 – mmmmmpie 2015-02-10 13:39:58

+0

肯定是一个散列标记'#'在SQL中无效,是吗? – 2015-02-10 13:40:38

+0

嗨,这是我们正在使用的实际代码,并且已经用于以前的表创建, – 2015-02-10 13:41:11

回答

0

最初的问题是只是一个名称不匹配,这是错误信息真的说的;行和位置指向单词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