国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

案例學習Oracle錯誤:ORA-00904

2024-08-29 13:34:05
字體:
來源:轉載
供稿:網友
  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成功。問題解決。   案例三:  環境 unix+oracle  在做完全導出的時候,導出表都正常但到導出同義詞時出錯,錯誤如下:   exporting synonyms

  exp-0000 racle error 904 encountered

  ora-00904 invalid column name

  exp-0000 exp terminaled unsuccessful  使用任何一個用戶導出該的數據同樣在這個地方停住,請問這是由于什么情況造成的,該如何解決才能正常exp整個數據庫呢?之前碰上過類似的情況: 數據庫被改了字符集后,導出時也是到synonym的時候出錯誤,報"shortname" 錯誤,后來把字符集改回原來安裝的時候選擇的字符集即可。 使這個問題嗎?  解決方案:原因不是字符集的問題,而是同義詞引起的,找出來將其刪除就可以了。  案例四:Oracle環境中訪問所有的SQL Server字段出錯  問題描述:我剛剛從Oracle建立了一條到SQL Server的連接,使用的是普通的連接,我想要執行一條select * from tablename@dblink 的命令。然而,我注重到SQL Server表中所有的字段都無法在Oracle環境中訪問。當我試圖選擇我認為應該在表中的字段的時候,我得到ORA-00904的錯誤信息:無效列名。針對這個問題的可能的解釋和解決方案是什么?  解決方案:當你在你的語句中指定了列名的時候,確保你用雙引號括住了列名,并且名字是區分大小寫的。例如:SELECT "column_A","Column_B" FROM "TableXYz"。  Oracle傾向于將上述字母轉換為大寫字母,SQL Server則對大小寫更加敏感。這就是最有可能的原因。案例五:不訪問系統表獲取無效列名   問題描述:當我從我的應用程序中運行SQL語句的時候,我得到如下的錯誤信息:“ORA-00904”無效列名。我的問題是,在不訪問系統表的時候,有沒有一種方式可以獲得有關這個錯誤的更多信息,例如那些無效的列名?  解決方案:當你獲得這個消息的時候運行了什么查詢?你的答案就在這里。運行的查詢中的一個列是無效的。假如你能運行這個查詢,那么你就可以看到包括了查詢中表的信息的“系統表”。只需要開啟SQL*Plus 會話,并且對表(或者一些表)進行描述。你的查詢中的一個列就不會是其中一個表的有效列名了。  假如你不知道SQL語句是什么,那么你就要運行的時候進行追蹤,找出錯誤中的語句。假如你不熟悉,不知道該怎么做的話,需要請求數據庫治理員的幫助。  案例六:查看擁有抽象字段數據類型的表中記錄出錯  問題描述:我想要查看一個表中記錄,這個表中有一個字段具有抽象的數據類型,我創建了如下的類型:  create or replace type marks_ty as object

  (m1 number(3),

  m2 number(3),

  m3 number(3),

  member function totmarks(m1 in number,m2 in

  number,m3 in number)

  return number);

  /  然后我創建了如下的類型體:  create or replace type body marks_ty as

  member function totmarks(m1 number,m2 number,m3

  number)

  return number is

  begin

  return (m1+m2+m3);

  end;

  end;

  /  其次,創建了如下的表:  create table stdmarks

  ( student_id number(4),

  marks marks_ty);  然后,我向其中插入了一些記錄。之后,我執行了如下的語句:  select marks.totmarks(marks.m1,marks.m2,marks.m3)

  from stdmarks;
  但是我卻碰到了如下的錯誤信息:  select marks.totmarks(marks.m1,marks.m2,marks.m3)

  from stdmarks

  *

  ERROR at line 1:

  ORA-00904: invalid column name  請幫助我。我在Oracle企業版中都試過了。  解決方案:一個有關你進行的操作的很少被人了解的事實就是你需要給表名起個別名,并且在調用成員函數的時候使用別名。那么,對你的查詢進行如下修改:  SELECT s.marks.totmarks(marks.m1,marks.m2,marks.m3)

  FROM stdmarks s;  案例七:探究ORA-00904錯誤信息  問題描述:我注重到您對ORA-00904錯誤信息的解答,這個ORA-00904錯誤信息是在鏈接SQL 服務器數據庫表之后,試圖對不同類型的列進行選擇時出現的。您的答案說,每個列都需要用雙引號來包圍。這樣做好嗎?我們有一個應用程序,但是我們并不希望有這樣的限制。這里面有什么考慮嗎?  解決方案:你可以試試看,改變你的SQL服務器實例的校驗,使它不為默認情況下的大小寫敏感。此時,表名“MyTable”和“MYTABLE”指的是同一個表。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 邵武市| 蒙阴县| 顺平县| 梁山县| 新巴尔虎左旗| 赫章县| 新津县| 康马县| 平潭县| 余干县| 鲜城| 丰原市| 调兵山市| 鹰潭市| 鄂伦春自治旗| 玛多县| 中阳县| 都匀市| 方城县| 庄河市| 涪陵区| 手机| 平武县| 德惠市| 嘉善县| 曲水县| 潞城市| 拜泉县| 蓬莱市| 平陆县| 邯郸市| 通山县| 延津县| 新建县| 玉田县| 汝州市| 汨罗市| 博湖县| 页游| 乐都县| 顺义区|