當前位置:生活全書館 >

IT科技

> 怎麼解決ora-00904: invalid identifier識別符號無效

怎麼解決ora-00904: invalid identifier識別符號無效

是我沒看懂還是什麼,你的句子裡面好像沒A2啊 ,怎麼提示ORA-00904: "A2"."T3": invalid identifier。 MERGE INTO teb1@zzxxcc te1 USING (select t1 tt1, t2 tt2,t3 tt3 from tes1) te2 ON (te1.cl1 = te2.tt1 ) WHEN MATCHED THEN UPDATE SET

使用oracle作為資料庫引擎,在執行sql的時候,出現錯誤ORA-00904: invalid identifier,也就是識別符號無效。

怎麼解決ora-00904: invalid identifier識別符號無效

材料/工具

電腦

方法

大部分情況下,此錯誤是由於引用了不存在的列名導致的。

我前陣子也遇到了類似的問題。你可以去檢查下你的資料庫,是不是少了一些欄位。或者對比一下欄位是不是字元什麼的打錯了。 然後可以檢查一下, 是不是你的列裡少了一個跟主鍵名字一樣的欄位。在資料庫中,要有一列是與主鍵的名字相同的列才可以

怎麼解決ora-00904: invalid identifier識別符號無效 第2張

先確定資料庫中引用到的列和自己sql中書寫的列名是否一致。如有不同,修改過來,重新測試應該可以解決問題。

這是你SQL語句的問題,出現ORA-00904是資料庫傳過來的錯誤.你把你的SQL語句放到資料庫裡面查一下是一樣的錯,不是你程式碼的錯誤.應該是欄位不存在或者欄位值是字元型別的,你沒有加上引號 , 根據你回覆一樓的.應該是那個欄位是int型別的.而你卻給它

怎麼解決ora-00904: invalid identifier識別符號無效 第3張

對於某些工具生成的sql,可能導致列明和期望不符的情況,有些工具生成的列名會帶有雙引號,從而導致此錯誤。

SELECT 'Next Month' AS date_title, ADD_MONTHS(sysdate,1) AS date_value FROM dual 函式名是 ADD_MONTHS 不是 add_month

怎麼解決ora-00904: invalid identifier識別符號無效 第4張

擴充套件閱讀,以下內容您可能還感興趣。

ORACLE 資料庫報錯 ORA-00904: "A2"."T3": invalid identifier

是我沒看來懂還是什麼,你的句子源裡面好知像沒A2啊 ,怎麼提示ORA-00904: "A2"."T3": invalid identifier。道

MERGE INTO teb1@zzxxcc te1

USING (select t1 tt1, t2 tt2,t3 tt3 from tes1) te2

ON (te1.cl1 = te2.tt1 )

WHEN MATCHED THEN

UPDATE

SET

te1.cl2 = te2.tt2,

te1.cl3 = te2.tt3

WHEN NOT MATCHED THEN

INSERT

VALUES (te2.tt1 ,te2.tt2 ,te2.tt3 ) ;更多追問追答追問我就是這個意思。。這個A2 從哪裡來的我也不知道。

我這個SQL 語句 就這麼長。 我用TOAD ORACLE 10G

這個系統老 說A2。T3. 。。。我也沒看見 A2在哪裡。

但是 如果我把 USING (select t1 tt1, t2 tt2,t3 tt3 from tes1) te2 改成

USING (select t1 , t2 ,t3 from tes1) te2 這樣

把欄位的 別名 全部去掉 就不會出現問題。。追答MERGE INTO TEB1 TE1

USING (SELECT T1 TT1, T2 TT2, T3 TT3 FROM TEST1) TE2

ON (TE1.CL1 = TE2.TT1)

WHEN MATCHED THEN

UPDATE SET TE1.CL2 = TE2.TT2, TE1.CL3 = TE2.TT3

WHEN NOT MATCHED THEN

INSERT (TE1.CL1, TE1.CL2, TE1.CL3) VALUES (TE2.TT1, TE2.TT2, TE2.TT3);

這是我在PL/SQL驗證通過的,跟你那個比起來也沒什麼差別

不過這表TE1是本地的,你可以試下本地建一個跟TE1完全一樣的表試試看追問MERGE INTO TEB1 TE1 這麼寫我這裡也沒問題。

MERGE INTO teb1@zzxxcc te1 但是必須要DBLINK

因為我這裡需要 跨資料庫作業。

而且我這個SQL語句是從別人寫好的SQL PROCEDURE 中 簡化過來的。

正常的程式中的。

看樣子 問題是出現在 跨資料庫。和別名這部分了。追答建議你單獨拿出來執行一下,不要在函式或者過程裡面測試,那個A2太詭異了。追問恩。這個我就是單獨拿出來自己寫的。

沒有寫PROCEDURE

只寫了MERGE 這部分。

呵呵。等有了答案 我這裡貼出來 !

謝謝你了

java.sql.SQLSyntaxErrorException: ORA-00904: "PAGENOW1": 識別符號無效

1、欄位名或者表名百寫錯了,仔細檢查核對一下,如果實在是沒有發度現錯的地方就有可能是第二種情況了

2、你的問欄位包含了oracle的關鍵字,把報錯的欄位用雙引號括起答來試試

應該是你這句"select * from (select a1.*,rownum rn from(select * from login)a1 where rownum<=pageSize*pageNow) where rn>=(pageNow-1)*pageSize+1"sql寫錯了內,你在檢查下。你用sqldevelper拼寫的時候有沒有提容示什麼錯誤嗎?

希望能夠幫到你

ORA-00904: : invalid identifier

看下是不是編碼的問題

Caused by: java.sql.BatchUpdateException: ORA-00904: "TESTID": 識別符號無效.

我前陣子也遇到了類似zhidao的問題。你可以去檢查下你的資料庫,是不是少了一些欄位。或者對比一下欄位是不是字元什麼的打錯了。

然後可以檢查一回下, 是不是你的列裡少了一個跟主鍵名字一樣的欄位。在資料庫中,要有一列是與主鍵的名字相同的列才可以進行正確的識別。你的問題就是無法識別到有這個列,說明就是缺少這個列。那你就看看新增一個列,然後名字與主鍵答的相同。

資料庫連線成功... java.sql.SQLException: ORA-00904: "SYS": invalid identifier at oracle.jdbc.driver

這是你SQL語句的問題,出現ORA-00904是資料庫傳過來的錯誤.你把你的SQL語句放到資料庫裡面查一下copy是一樣的錯,不是你程式碼的錯誤.應該是欄位不存在或者欄位值是字元型別的zd,你沒有加上引號 ,

根據你回覆一樓的.應該是那個欄位是int型別的.而你卻給它字元型別的追問這是建的表:USERID NUMBER,USERNAME VARCHAR2, PASSWORD VARCHAR2,給username插入abc查詢就出錯,插入123查詢沒問題。追答我說的是你插入語句問題 欄位的值要用引號..如果是你用String拼起來的話,要記得拼上單引號..你除錯的時候把SQL語句拷出來看一下.例如:

INSERT INTO 表(USERNAME) VALUES ( ' MYNAME ' )

用String拼的話要是 String SQL="INSERT INTO 表(USERNAME) VALUES ( ' "+ MYNAME +" ' );

如果你直接用 INSERT INTO 表(USERNAME) VALUES ( "+ MYNAME ")" 就會把MYNAME當作是數字型別插入,然後就報錯了

引數比較多的話建議用佔位符,這樣比較不容易出現SQL錯誤..

  • 文章版權屬於文章作者所有,轉載請註明 https://shqsg.com/dianzi/60ozwz.html