【问题标题】:Oracle SQL Error MessageOracle SQL 错误消息
【发布时间】:2015-02-10 13:35:18
【问题描述】:

我正在创建一个表格,我已经创建了多个相同格式的表格,并且已经成功编译。

这是我想要创建的:

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

我收到以下错误消息:

从命令的第 1 行开始的错误: 创建表property_table的property_t( 属性#主键) 嵌套表将存储关联为关联预约表 命令行错误:3 列:14 错误报告: SQL 错误: ORA-00904: : 无效的标识符 00904. 00000 - “%s:无效标识符” *原因: *行动:

希望有人能帮忙

【问题讨论】:

  • 你能发布你正在使用的实际代码吗?以上不是有效的 DDL。
  • 肯定哈希标记# 在 SQL 中无效,是吗?
  • 嗨,这是我们正在使用的实际代码,并且已用于以前的表格创建,
  • 创建表property_tab of property_t(主键(property#)) 嵌套表关联存储为record_apppoint_table;
  • hash 之前已经使用过并且可以使用 qarma

标签: sql oracle


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-16
    • 1970-01-01
    • 1970-01-01
    • 2013-04-28
    • 2017-01-24
    相关资源
    最近更新 更多