尝试在 SQL 中创建新的 table 时出错

Error trying to create a new table in SQL

我正在做一些 SQL 练习,其中一个需要我 运行 创建新 table

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

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

ORA-00902: invalid datatype

您当前的代码似乎是 SQL 服务器。在 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)
);

Oracle 中不存在 TEXT 数据类型。您要使用 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)
);