我用create在oracle 下建立了一个表,随即用insert 语句插入数据但是总报告“无效列名“的错误。但是列名绝对是正确的,百思不得其解。大虾救命。
CREATE TABLE functiongroup_table(
"functiongroup_id" NUMBER(8) NOT NULL,
"functionname" VARCHAR2(10),
"functiondesc" VARCHAR2(100),
"remark" VARCHAR2(300),
PRIMARY KEY("functiongroup_id")
);
commit;
SQL> INSERT INTO FUNCTIONGROUP_TABLE (functiongroup_id ,functionname ,functiondesc ,remark ) VALUES
(1 ,'入所登记' ,'入所登记' ,'' )
2 ;
INSERT INTO FUNCTIONGROUP_TABLE (functiongroup_id ,functionname ,functiondesc ,remark ) VALUES (1 ,'
*
ERROR 位于第 1 行:
ORA-00904: 无效列名
13 个解决方案
CREATE TABLE functiongroup_table(
functiongroup_id NUMBER(8) NOT NULL,
functionname VARCHAR2(10),
functiondesc VARCHAR2(100),
remark VARCHAR2(300),
PRIMARY KEY(functiongroup_id)
);
commit;
INSERT INTO FUNCTIONGROUP_TABLE (functiongroup_id ,functionname ,functiondesc ,remark ) VALUES
(1 ,'入所登记' ,'入所登记' ,'' );
建表时,列名被强制成为小写,而插入时的SQL语句写法,Oracle会默认为大写的列名,所以你的插入语句会失败.
修改的两种办法,一种为zhuzhichao(竹之草)提供的重建表.另一种为
InsertINTO FUNCTIONGROUP_TABLE ("functiongroup_id","functionname","functiondesc","remark") VALUES
(1 ,'入所登记' ,'入所登记' ,'' );
即强制列名为小写。
我按两位的做法都试验过了,还是不行。奇怪。太奇怪了。
实际上我是创建完表后就想插入数据,但是无论在oracle DBA studio 还是在delphi的sql explore下都不能插入数据,错误就是“-00904: 无效列名“,快救命。
我按两位的做法都试验过了,还是不行。奇怪。太奇怪了。
实际上我是创建完表后就想插入数据,但是无论在oracle DBA studio 还是在delphi的sql explore下都不能插入数据,错误就是“-00904: 无效列名“,快救命。
你建表时加引号干吗?列名就是"functiongroup_id" ,你插到functiongroup_id里面肯定不行,找不到列名。
不加引号,把表从建一遍!
ORACLE缺省是不区分大小写的,还有命名规则,而你使用“双引号”就是忽略这些限制,严格按照你指定的名字来建立对象。
你在使用这种对象时也需要使用双引号来引用对象名。
INSERT INTO FUNCTIONGROUP_TABLE ("functiongroup_id" ,"functionname" ,"functiondesc" ,"remark" ) VALUES
(1 ,'入所登记' ,'入所登记' ,'' )
DDL语句会结束一个TRANSACTION,建表以后不用COMMIT。
我现在找到了另外一个建立表能插入数据的办法。就是用oracle dba studio 去建表,就可以插入数据,但是用insert语句还是不行。都试验过来
是不是权限不够?
登录oracle dab studio建表与插入数据用户一致吗?
我测试过了,9Thoughts是对的,如果你还不对就可能是别的什么原因了。
楼上有位兄弟说得对,你建表时加引号干吗?去掉就好了,不要把问题搞得这么复杂好不好,其实很简单。我试过了,去掉引号就什么问题都没有了