ORA-00942:table or view does not exist


 

好好的表都建成功了,在PL/SQL中編輯數據時給我來這個提示,起的我沒辦法了。查到如下:

oracle建表時有一個嚴重的問題,在此寫出來,提醒大家注意:
先簡單寫一下錯誤內容,如各位已經發現過此問題並已知處理方法,請忽略此郵件內容,以節省時間。
簡單的說就是如在ORACLE建表時的SQL中表名用引號括起來了,則以后對此表的所有操作都必須把此表名用引號括起來,否則報“表不存在”。
以下為錯誤詳細介紹:
錯誤現象:我先用PowerDesigner生成數據庫建表腳本,然后在MyEclipse中執行此腳本生成數據庫表,執行后,在MyEclipse已經可以看到此表結構。然后我用select語句查詢此表數據,ORACLE提示“ORA-00942 : table or view does not exist ”,表或視圖不存在。但我用MyEclipse生成的SQL來查詢此表數據,ORACLE沒有報錯。
建表語句簡寫如下:
create table "Test01"
(
"id" int,
"name" varchar(20)
);
試過的手寫select語句如下:select * from Test01; select * from hie.Test01; select * from hie.hieuser.Test01; select * from hie.Test01;(hie是數據庫實例名,hieuser是數據庫用戶名)
錯誤分析:MyEclipse自動生成的SQL為:select "id", "name" from "hieuser"."Test01",發現MyEclipse自動生成的SQL把相關標識名用引號包圍,看來ORACLE對引號很感冒,據此在google上查詢了oracle和“引號”相關的內容,結果如下:
oracle建表時,如建表的SQL同時滿足以下條件,則不論在查詢或新增數據時都必須把相應SQL中的表名用引號括起來,否則會報00942錯誤。
條件1.建表的SQL中表名用引號括起來了。
條件2.建表的SQL中表名中英文字符不全部都是大寫(即包括一或多個小寫英文字符,其他情況我沒試過,如表名純為“123”等情況)。
解決辦法:強烈建議大家在ORACLE中建表時不要把表名用""括起來,否則把所有涉及到此表的代碼中所有表名都加上引號會相當痛苦,在ColdFusion中為了防止和變量聲明的引號沖突,可能還要加上轉義字符,在JAVA中如果用HIBERNATE來做數據庫交互的話,甚至連加引號的途徑都沒有,只能刪除表后重新建表。
另:我今天在ORACLE 11g中遇到了這個問題,我記得我在兩年前也遇到過這個問題,那時我記不清我使用的是哪個ORACLE版本了,反正我感覺ORACLE多個版本中都存在此問題。

正如上面描述,果不其然。11g也是有這樣問題的。這樣怎么辦啊?PL/SQL生成的腳本都是帶引號的。姑且標記一下。以后有機會再處理一下這個問題。

另外,PL/SQL developer15里連接ORACLE 11g的時候明明加上了正確的驅動名以及依賴文件,死活都連接不上,這個時候將依賴包加入classpath環境變量吧!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM