首页 > 解决方案 > 尝试在 SQL 中创建新表时出错

问题描述

我正在做一些 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: 无效的数据类型

标签: sqlstringoracle11gcreate-table

解决方案


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

取决于您的 Oracle 版本,INT并且INTEGER可能有效,但最好使用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)
);

推荐阅读