好好的表都建成功了,在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多個版本中都存在此問題。oracle
正如上面描述,果不其然。11g也是有這樣問題的。這樣怎麼辦啊?PL/SQL生成的腳本都是帶引號的。姑且標記一下。之後有機會再處理一下這個問題。 google
另外,PL/SQL developer15裏鏈接ORACLE 11g的時候明明加上了正確的驅動名以及依賴文件,死活都鏈接不上,這個時候將依賴包加入classpath環境變量吧!spa