Oracle的ORA-00904错误
2007-06-02 16:04:07 来源:WEB开发网ORA-00904: 无效的列名
Cause The column name entered is either missing or invalid.
Action Enter a valid column name. A valid column name must begin with a letter, be less than or equal to 30 characters, and consist of only alphanumeric characters and the special characters $, _, and #. If it contains other characters, it must be enclosed in double quotation marks. It may not be a reserved word.
原因:列丢失或无效列名。
方案:输入有效的列名。一个有效的列名必须是以字母开头,小于30个字符,并且只包含字母、数字或一些特殊的符号$,_,#。如果还包含其它的字符,那么这段字符必须用双引号引起来。列名不能是关键字。
案例一:创建表时出现的问题
问题描述:
SQL> DESC S_CUSTOMER;
名称 是否为空? 类型
-----------------------------------------
id NOT NULL NUMBER(7)
name NOT NULL VARCHAR2(50)
phone VARCHAR2(25)
address VARCHAR2(400)
city VARCHAR2(30)
state VARCHAR2(20)
country VARCHAR2(30)
zip_code VARCHAR2(75)
credit_rating VARCHAR2(9)
sales_rep_id NUMBER(7)
region_id NUMBER(7)
comments VARCHAR2(255)
但是当我SELECT的时候总是报错:
SQL> SELECT ID FROM S_CUSTOMER;
SELECT ID FROM S_CUSTOMER
*
ERROR 位于第 1 行:
ORA-00904: "ID": 无效的标识符
怎么会这样呢?
解决方案:ORACLE通过访问SQL Server的数据库链接时,用select * 的时候字段名是用双引号引起来的。你创建表的语句加了双引号的吗?估计是PD类似的工具创建的脚本吧?
看下面的例子
SQL> create table test ("id" number not null);
表已创建。
SQL> select ID FROM test;
select ID FROM test
*
ERROR 位于第 1 行:
ORA-00904: "ID": 无效的标识符
SQL> select id from test;
select id from test
*
ERROR 位于第 1 行:
ORA-00904: "ID": 无效的标识符
SQL> desc test;
名称 是否为空? 类型
----------------------------------------- -------- ------------
id NOT NULL NUMBER
SQL> select "id" from test;
未选定行
SQL>
案例二:
环境:solaris+oracle
问题:exp时遇到
EXP-00008: ORACLE error 904 encountered
ORA-00904: invalid column name
EXP-00000: Export terminated unsuccessfully
提供的情况:wcs组使用java,所以判断是java的问题。ora-00904时oracle的一个bug。
所以需要使用errorstack来追踪错误。执行
alter system set events='904 trace name errorstack';
然后到udump下查看trace文件。发现是exu8jbqu这个view的问题。
alter system set events='904 trace name errorstack off';
查看exu8jbqu是否存在:
select owner,object_name,object_type,object_id,status
from dba_objects where object_name='exu8jbqu';
发现存在。重新执行$ORACLE_HOME/rdbms/admin/catexp.sql 创建视图。
重新执行exp成功。问题解决。
- ››oracle 恢复误删除的表和误更新的表
- ››Oracle分页查询排序数据重复问题
- ››Oracle创建dblink报错:ORA-01017、ORA-02063解决
- ››Oracle 提高SQL执行效率的方法
- ››Oracle 动态查询,EXECUTE IMMEDIATE select into...
- ››Oralce新建数据库、新建远程登录用户全过程
- ››Oracle 11g必须开启的服务及服务详细介绍
- ››oracle性能34条优化技巧
- ››oracle数据库生成随机数的函数
- ››Oracle 数据库表空间容量调整脚本
- ››oracle单库彻底删除干净的方法
- ››Oracle创建表空间、创建用户以及授权、查看权限
更多精彩
赞助商链接