今天在使用Oracle SQL developer创建表时报了一个“SQL 错误: ORA-00984: 列在此处不允许”,这个错误原因说的太含蓄,后来一遍一遍的纠错才知道了原因…
出错的代码:
CREATE TABLE dept(
deptno NUMBER(2,0),
dname VARCHAR2(14 BYTE),
loc VARCHAR2(13 BYTE)
)
INSERT INTO dept(deptno,dname,loc)
VALUES(10,ACCOUNTING,NEW YORK);
INSERT INTO dept(deptno,dname,loc)
VALUES(20,RESEARCH,DALLAS);
INSERT INTO dept(deptno,dname,loc)
VALUES(30,SALES,CHICAGO);
INSERT INTO dept(deptno,dname,loc)
VALUES(40,OPERATIONS,BOSTON);
错误原因:
VARCHAR2是变长的字符类型,而且字符串字面量是使用单引号的。
虽然SQL语句本身不区分大小写,但是字符串的值是区分大小写的。
由上面的代码可以看出,在给主键赋值时,VARCHAR2类型的数据我都没有用单引号引起来,所以报错。。。
所以猜测SQL 错误: ORA-00984应该是指类型不匹配吧。。。
修改后的代码
CREATE TABLE dept(
deptno NUMBER(2,0),
dname VARCHAR2(14 BYTE),
loc VARCHAR2(13 BYTE)
)
DESC dept;
INSERT INTO dept(deptno,dname,loc)
VALUES(10,'ACCOUNTING','NEW YORK');
INSERT INTO dept(deptno,dname,loc)
VALUES(20,'RESEARCH','DALLAS');
INSERT INTO dept(deptno,dname,loc)
VALUES(30,'SALES','CHICAGO');
INSERT INTO dept(deptno,dname,loc)
VALUES(40,'OPERATIONS','BOSTON');
SELECT * FROM dept;