萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> oracle教程 >> Oracle的ORA-00904錯誤

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成功。問題解決。

  • 共2頁:
  • 上一頁
  • 1
  • 2
  • 下一頁
copyright © 萬盛學電腦網 all rights reserved