Oracle:ORA-00955: name is already used by an existing object


 下午從生產庫導出了一份表結構,用來測試一些問題,由於生產庫連接着其他用戶下的表所以通過視圖在本地模擬一下,於是創建視圖:

create or replace view csews as select * from order_list;

但是出現ORA-00955: name is already used by an existing object的錯誤,

上網查了下說是數據庫中有了同名對象,於是查詢

select * from all_objects where object_name='csews';

但是沒有任何記錄,很是抓狂,找了好久也沒有找到解決辦法,最后就在表結構文件中搜索

csews 居然搜索到了這樣一條語句:

create or replace synonym CSEWS for P3DBO.CSEWS;

我恍然大悟了,原來創建了同義詞。

於是就刪除了同義詞:

drop public synonym CSEWS;

然后重新執行:

create or replace view csews as select * from order_list;

視圖就成功建立了。

但是仔細一想,select * from all_objects where object_name='csews';

這條語句應該可以查出來呀,因為我另一個用戶下也有這個視圖但是為什么沒有查出來呢,於是有把csews 換成大寫試了下即查詢:

select * from all_objects where object_name='CSEWS';

結果就查詢出來了,這時才明白原來要大寫。如果早知道就不會浪費那么多時間了,但是誰讓咱是菜鳥水平,特此記錄一下,

避免自己下次再犯類似錯誤!

 

注:經過Oracle的詞法分析,本身就會將小寫轉成大寫,直接大寫減少了編譯過程的時間,所以大寫是一個好習慣!

 


免責聲明!

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



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