【问题标题】:Nested tables - ORA-00902: invalid datatype嵌套表 - ORA-00902:无效数据类型
【发布时间】:2015-04-27 08:50:01
【问题描述】:

当我想将变量“price”的数据类型识别为对象类型“rsd”时遇到问题。当我创建表时,它会返回 SQL Exception: ORA-00902: invalid datatype

CREATE OR REPLACE TYPE  "RSD" AS OBJECT (
currency number(9,2),
MEMBER FUNCTION get_currency RETURN number)
INSTANTIABLE NOT FINAL;

CREATE OR REPLACE TYPE BODY "RSD" AS
MEMBER FUNCTION get_currency RETURN number IS
    BEGIN
        RETURN SELF.currency;
    END;
END;

CREATE TABLE bill_item(
bill_ID number,
rb number,
price rsd,
item_id number,
CONSTRAINT scpk PRIMARY KEY (bill_id));

你能帮帮我吗?

【问题讨论】:

  • 一次执行一个,而不是作为脚本。看我的回答。

标签: sql oracle oracle-sqldeveloper sqldatatypes sqlexception


【解决方案1】:

我怀疑你是作为脚本执行的,你一定遇到了 TYPE BODY 的编译错误。你还没有关闭它的范围。

不要将所有步骤作为脚本一起执行。一次执行一个。如果你一步一步做,它就会成功。

或者,在每个块的末尾加上一个正斜杠,然后作为脚本执行。

SQL> CREATE OR REPLACE TYPE  "RSD" AS OBJECT (
  2  currency number(9,2),
  3  MEMBER FUNCTION get_currency RETURN number)
  4  INSTANTIABLE NOT FINAL
  5  /

Type created.

SQL>
SQL> CREATE OR REPLACE TYPE BODY "RSD" AS
  2  MEMBER FUNCTION get_currency RETURN number IS
  3      BEGIN
  4          RETURN SELF.currency;
  5      END;
  6  END;
  7  /

Type body created.

SQL>
SQL> CREATE TABLE bill_item(
  2  bill_ID number,
  3  rb number,
  4  price rsd,
  5  item_id NUMBER,
  6  CONSTRAINT scpk PRIMARY KEY (bill_id))
  7  /

Table created.    

SQL> desc bill_item;
 Name                                      Null?    Type
 ----------------------------------------- -------- ------
 BILL_ID                                   NOT NULL NUMBER
 RB                                                 NUMBER
 PRICE                                              RSD
 ITEM_ID                                            NUMBER

SQL>
SQL> select * from bill_item;

no rows selected

【讨论】:

  • 一开始我按照你说的那样执行了一次。创建了类型和类型主体,但没有创建表。由于某种原因,我仍然遇到错误。
  • 您能否像我演示的那样使用复制粘贴您的 SQL*Plus 会话。编辑您的问题并添加详细信息。
猜你喜欢
  • 1970-01-01
  • 2013-01-26
  • 1970-01-01
  • 2018-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-08
  • 2021-11-16
相关资源
最近更新 更多