Oracle:"ORA-00942: 表或視圖不存在"


情景

項目中使用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”,點擊【應用】按鈕。

  這樣再生成sql語句時,表和字段名上是沒有引號了。
  更改完設置之后需要重新啟動!
 
EF、DbEntry等生成的Sql腳本默認是帶""


免責聲明!

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



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