首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Oracle频道
中国IT教育
Google
首页 入门基础 安装配置 体系架构 PLSQL 备份恢复 性能调优 开发技术 资讯动态 考试认证 下载 专题 讨论
您现在的位置: 中国IT实验室 >> Oracle >> 性能调优 >> 正文

案例学习Oracle错误:ORA-00904

  ORA-00904 invalid column name

  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成功。问题解决。

 

[1] [2] 下一页

【责编:Peng】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 专题推荐

 ·关于Java框架技术专题
 ·XML全攻略技术专题
 ·JAVA开源技术介绍专题
 ·Java嵌入式开发之J2ME技术专题
 ·超前体验 Oracle 11g的5个新特性…
 ·揭密使用VB.NET的五个实用技巧
 ·Oracle和SQL Server常用函数对比专题…
 ·展现C#世界 C#程序设计专题…
 ·Java入门 Tomcat的配置技巧精华专题…
 ·Oracle RMAN物理备份技术详解…
 今日更新
 社区讨论
 博客论点
 频道精选
 Oracle频道相关导航