【问题标题】:Error trying to create a new table in SQL尝试在 SQL 中创建新表时出错
【发布时间】:2018-12-16 02:03:36
【问题描述】:

我正在做一些 SQL 练习,其中一个要求我运行创建新表的给定代码

CREATE TABLE TDEPTO_1 (
    NUMDE INTEGER,
    NUMCE INTEGER,
    DIREC INTEGER,
    TIDIR TEXT,
    PRESU INT,
    DEPDE INT,
    NOMDE TEXT,
    CONSTRAINT [PK] PRIMARY KEY ([NUMDE])
);

但是当我尝试在 Oracle Application Express 中运行它时,它会显示此错误消息

ORA-00902: 无效的数据类型

【问题讨论】:

  • 您是否从 SQL Server 获得此 CREATE TABLE 语句?
  • 可能是,我从我的大学老师那里得到的

标签: sql string oracle11g create-table


【解决方案1】:

TEXT 数据类型在 Oracle 中不存在。您想使用VARCHAR2(n),其中n 是您的列可以允许的最大字节数(最多4000 个字节)。

根据您的 Oracle 版本,INTINTEGER 可能有效,但最好使用 PLS_INTEGER

此外,您应该删除约束定义中的方括号 ([]),因为这也会在 Oracle 中产生错误。

尝试(将100 更改为所需的文本长度):

CREATE TABLE TDEPTO_1 (
    NUMDE PLS_INTEGER,
    NUMCE PLS_INTEGER,
    DIREC PLS_INTEGER,
    TIDIR VARCHAR2(100),
    PRESU PLS_INTEGER,
    DEPDE PLS_INTEGER,
    NOMDE VARCHAR2(100),
    CONSTRAINT PK PRIMARY KEY (NUMDE)
);

【讨论】:

    【解决方案2】:

    您当前的代码似乎是 SQL Server。在 Oracle 中,没有确切称为 INTEGER 的数据类型,但有一个 PLS_INTEGER。同样,没有TEXT 类型,但我们可以使用VARCHAR2 之类的东西:

    CREATE TABLE TDEPTO_1 (
        NUMDE PLS_INTEGER,
        NUMCE PLS_INTEGER,
        DIREC PLS_INTEGER,
        TIDIR VARCHAR2(100),
        PRESU PLS_INTEGER,
        DEPDE PLS_INTEGER,
        NOMDE VARCHAR2(100),
        CONSTRAINT PK PRIMARY KEY (NUMDE)
    );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-04
      • 2013-03-05
      • 1970-01-01
      • 1970-01-01
      • 2019-04-22
      • 1970-01-01
      • 1970-01-01
      • 2014-08-30
      相关资源
      最近更新 更多