尝试在SQL中创建新表时出错

时间:2018-12-16 02:03:36

标签: sql oracle11g

我正在做一些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 Aplication Express中运行它时,它会显示此错误消息

  

ORA-00902:无效的数据类型

2 个答案:

答案 0 :(得分:3)

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)
);

答案 1 :(得分: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)
);