ORACLE物件名大小寫敏感性相關的深入分析

qinwen740發表於2010-03-05

注:
1、 本文是以ORACLE10.2為測試分析版本
2、 本文中提到的ORACLE對像名包括ORACLE中的表名、檢視名、欄位名、函式名等等。


以下是筆者對建立表及訪問使用不同命名方式的一個例項,是筆者的機器上測試結果:

連線到:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options

SQL> create table mytable  ( C1 VARCHAR2(6)  );
Table created

insert into mytable values('aer');
SQL> select * from "MYTABLE";
C1
---------------
aer

SQL> select * from MYtable;
C1
---------------
aer

SQL> select * from "mytable";
select * from "mytable"
ORA-00942: 表或檢視不存在
SQL> drop table mytable;
Table dropped
SQL>
SQL> create table "mytable" (C1 varchar2(6));

Table created.

SQL> insert into "mytable" values('aer');

1 row created.

SQL> select * from "mytable";
C1
---------------
aer

SQL> select * from mytable;
select * from mytable
              *
ERROR at line 1:
ORA-00942: table or view does not exist

 
SQL> select * from MYTABLE;
select * from MYTABLE
              *
ERROR at line 1:
ORA-00942: table or view does not exist


SQL> select * from "MYTABLE";
select * from "MYTABLE"
              *
ERROR at line 1:
ORA-00942: table or view does not exist


下表為筆者的測試結果彙總:
√表示允許訪問,×表示不允許訪問。
例項:
讀取         mytable MYTABLE "mytable" "MYTABLE"

建立
mytable         √           √               ×             √
MYTABLE     √           √                ×            √
"mytable"      ×           ×               √             ×
"MYTABLE" √           √                ×             √

總結歸納:
讀取                      小寫字母 大寫字母 加引號小寫字母 加引號大寫字母
建立 
小寫字母                    √              √                    ×                         √
大寫字母                    √              √                    ×                         √
加引號小寫字母        ×              ×                    √                         ×
加引號大寫字母        √              √                    ×                         √

以下為根據筆者對ORACLE資料字典及實際測試總結分析結論:
ORACLE在建立對像時如果沒有加引號,對存入資料字典時都會將對像名小寫字母轉換成大寫字母儲存,如mytable將轉換成MYTABLE;如果建立時加了引號,則以引號內的實際字元儲存。
訪問時如果沒加引號則會將小寫字母轉換成大寫字母再訪問,如mytable將轉換成MYTABLE;如果加了引號則以引號內的實際字元訪問。
ORACLE在讀取資料字典時只要發現對像名裡有小寫字母或者是除字母漢字以外開頭的字元都認為是大小寫敏感的,並且要求在訪問時需要加上引號。

建議建立及更新時,表名、檢視名、欄位名、函式名不要加引號。

本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/wh62592855/archive/2009/09/24/4589068.aspx

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15688952/viewspace-628734/,如需轉載,請註明出處,否則將追究法律責任。

相關文章