今天在使用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;