標籤:des blog 使用 檔案 for 資料 ar 問題 div
採用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語句時,表和欄位名上是沒有引號了。
"ORA-00942: 表或視圖不存在 "的原因和解決方案[轉]