我正在做一些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:无效的数据类型
答案 0 :(得分:3)
Oracle中不存在TEXT
数据类型。您要使用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)
);
答案 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)
);