"ORA-00942: 表或視圖不存在 "的原因和解決方法

採用Oracle數據庫,使用Powerdesigner設計,生成Sql文件導入後查詢出現“ORA-00942: 表或視圖不存在 ”,很是鬱悶,這個問題以前出現過,當初解決了,但因好久沒有使用,這次竟然忘了,害得我浪費了好些時間,爲了避免再次忘記,將它記下來,同時和大家一起分享。

1、問題產生的原因

  Oracle 是大小寫敏感的,我們創自己寫Sql腳本創建表的時候Oracle會自動將我們的表名,字段名轉成大寫,

  eg:

create table T_WindRadar  (
   wr_id                VARCHAR2(64)                    not null,
   wr_reciveTime        DATE,
   wr_image             BLOB,
   constraint PK_T_WINDRADAR primary key (wr_id)
);

 

但是 Oracle 同樣支持"" 語法,將表名或字段名加上""後,Oracle不會將其轉換成大寫
eg:

create table "T_WindRadar"  (
   "wr_id"                VARCHAR2(64)                    not null,
   "wr_reciveTime"        DATE,
   "wr_image "            BLOB,
   constraint PK_T_WINDRADAR primary key (wr_id)
);

如果加上了"",那麼我們採用一般的SQL語句查詢則會產生“ORA-00942: 表或視圖不存在 ”,因此SQL腳本中需要將表名也加上""。
eg:

select * from  "T_WindRadar";

 

這種情況在我們手寫SQL的時候一般不會發生,但是我們使用powerdesigner設計數據庫的時候,由於不注意會經常出現此類問題,因爲Powerdesigner生成的SQL文件默認是加""的。

2、解決的辦法

  因爲我們使用的是Powerdesigner,所以可以不用手工改寫SQL腳本,只要設置Powerdesigner重新生成即可。

  在PowerDesiger中,在physical data model 中找到菜單中的Database下的Edit current DBMS中,

  選擇Script->Sql->Format,有一項CaseSensitivityUsingQuote,它的comment爲“Determines if the case sensitivity for identifiers is managed using double quotes”,

  表示是否適用雙引號來規定標識符的大小寫,可以看到右邊的values默認值爲“YES”,改爲“No”,點擊【應用】按鈕。

    這樣再生成sql語句時,表和字段名上是沒有引號了。
發佈了22 篇原創文章 · 獲贊 13 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章