情景
項目中使用Powerdesigner設計數據結構,在Powerdesigner中數據表和字段都區分了大小寫,並生成了Oracle表,在執行Sql腳本時遇到以下問題:“ORA-00942: 表或視圖不存在“
1、問題產生的原因:Oracle 區分字母大小寫
例如:
建表方式一:
create table user_Info ( user_address VARCHAR2(50) not null, user_name NVARCHAR2(50),
constraint PK_T_WINDRADAR primary key (wr_id) );
建表方式二:
create table "user_Info" (
"user_address" VARCHAR2(50) not null,
"user_name" NVARCHAR2(50),
constraint PK_T_WINDRADAR primary key (wr_id) );
兩種方式建表的結果:一個表名為USER_INFO,另一個表名為user_Info
因為 Oracle 支持"" 語法,將表名或字段名加上""后,Oracle不會將其轉換成大寫,如果不加""Oracle默認會將字母轉成大寫。
如果加上了"",那么我們采用一般的SQL語句查詢則會產生“ORA-00942: 表或視圖不存在 ”,因此SQL腳本中需要將表名也加上""。
select * from "user_Info";
這種情況在我們手寫SQL的時候一般不會發生,但是我們使用powerdesigner設計數據庫的時候,由於不注意會經常出現此類問題,因為Powerdesigner生成的SQL文件默認是加""的。
2、Powerdesigner更改設置
在PowerDesiger菜單中的Database下的Edit current DBMS中
選擇Script->Sql->Format,有一項CaseSensitivityUsingQuote,它的comment為“Determines if the case sensitivity for identifiers is managed using double quotes”,
表示是否適用雙引號來規定標識符的大小寫,可以看到右邊的values默認值為“YES”,改為“No”,點擊【應用】按鈕。