ORACLE对象名大小写敏感性相关的深入分析
2011-09-26 17:07
218 查看
注:
1、 本文是以ORACLE9.2为测试分析版本
2、 本文中提到的ORACLE对象名包括ORACLE中的表名、视图名、字段名、函数名等等。
一般大家在进行Oracle开发或管理里都不会对ORACLE对象名大小写进行区别,因为ORALCE在普通情况下会将所有小写都转换为大写进行处理,所以可以说是大小写不敏感的。但是实际ORACLE内部有它一套完整的对象名处理方式。本文将从实例进行分析与探讨ORACLE对象名大小写敏感性的处理机制。
可能有些人员在工作已经了解到,ORACLE在创建对象时是可以加引号的,如果不加引号则不能使用特别字符,只能使用以字母开头的命名。如果加了引号就可以在对像名里使用任何字符,包括数字开头、下划线、逗号等等。在导出SQLSERVER2000的对象创建脚本时一般是加了引号的,所以经常有人说脚本在ORACLE中运行后对象不能访问的问题。
以下是笔者对创建表及访问使用不同命名方式的一个实例,是笔者的机器上测试结果:
Connected to Oracle9i Enterprise Edition Release 9.2.0.7.0
Connected as *****
SQL> create table mytable1
2 (
3 C1 VARCHAR2(6)
4 );
Table created
SQL> select * from "MYTABLE1";
C1
------
SQL> select * from MYtable1;
C1
------
SQL> select * from "mytable1";
select * from "mytable1"
ORA-00942: 表或视图不存在
SQL> drop table mytable1;
Table dropped
SQL>
SQL>
SQL> create table "mytable1"
2 (
3 C1 VARCHAR2(6)
4 );
Table created
SQL> select * from "mytable1";
C1
------
SQL> select * from mytable1;
select * from mytable1
ORA-00942: 表或视图不存在
SQL> select * from MYTABLE1;
select * from MYTABLE1
ORA-00942: 表或视图不存在
下表为笔者的测试结果汇总:
√表示允许访问,×表示不允许访问。
实例:
总结归纳:
以下为根据笔者对ORACLE数据字典及实际测试总结分析结论:
ORACLE在创建对象时如果没有加引号,对存入数据字典时都会将对象名小写字母转换成大写字母存储,如mytable将转换成MYTABLE;如果创建时加了引号,则以引号内的实际字符存储。
访问时如果没加引号则会将小写字母转换成大写字母再访问,如mytable将转换成MYTABLE;如果加了引号则以引号内的实际字符访问。
ORACLE在读取数据字典时只要发现对象名里有小写字母或者是除字母汉字以外开头的字符都认为是大小写敏感的,并且要求在访问时需要加上引号。
[align=right]叶正盛(MKing)[/align]
2007-7-29
[来自:http://blog.csdn.net/yzsind/archive/2007/07/29/1714869.aspx]
1、 本文是以ORACLE9.2为测试分析版本
2、 本文中提到的ORACLE对象名包括ORACLE中的表名、视图名、字段名、函数名等等。
一般大家在进行Oracle开发或管理里都不会对ORACLE对象名大小写进行区别,因为ORALCE在普通情况下会将所有小写都转换为大写进行处理,所以可以说是大小写不敏感的。但是实际ORACLE内部有它一套完整的对象名处理方式。本文将从实例进行分析与探讨ORACLE对象名大小写敏感性的处理机制。
可能有些人员在工作已经了解到,ORACLE在创建对象时是可以加引号的,如果不加引号则不能使用特别字符,只能使用以字母开头的命名。如果加了引号就可以在对像名里使用任何字符,包括数字开头、下划线、逗号等等。在导出SQLSERVER2000的对象创建脚本时一般是加了引号的,所以经常有人说脚本在ORACLE中运行后对象不能访问的问题。
以下是笔者对创建表及访问使用不同命名方式的一个实例,是笔者的机器上测试结果:
Connected to Oracle9i Enterprise Edition Release 9.2.0.7.0
Connected as *****
SQL> create table mytable1
2 (
3 C1 VARCHAR2(6)
4 );
Table created
SQL> select * from "MYTABLE1";
C1
------
SQL> select * from MYtable1;
C1
------
SQL> select * from "mytable1";
select * from "mytable1"
ORA-00942: 表或视图不存在
SQL> drop table mytable1;
Table dropped
SQL>
SQL>
SQL> create table "mytable1"
2 (
3 C1 VARCHAR2(6)
4 );
Table created
SQL> select * from "mytable1";
C1
------
SQL> select * from mytable1;
select * from mytable1
ORA-00942: 表或视图不存在
SQL> select * from MYTABLE1;
select * from MYTABLE1
ORA-00942: 表或视图不存在
下表为笔者的测试结果汇总:
√表示允许访问,×表示不允许访问。
实例:
读取 创建 | mytable1 | MYTABLE1 | “mytable1” | “MYTABLE1” |
mytable1 | √ | √ | × | √ |
MYTABLE1 | √ | √ | × | √ |
“mytable1” | × | × | √ | × |
“MYTABLE1” | √ | √ | × | √ |
读取 创建 | 小写字母 | 大写字母 | 加引号小写字母 | 加引号大写字母 |
小写字母 | √ | √ | × | √ |
大写字母 | √ | √ | × | √ |
加引号小写字母 | × | × | √ | × |
加引号大写字母 | √ | √ | × | √ |
ORACLE在创建对象时如果没有加引号,对存入数据字典时都会将对象名小写字母转换成大写字母存储,如mytable将转换成MYTABLE;如果创建时加了引号,则以引号内的实际字符存储。
访问时如果没加引号则会将小写字母转换成大写字母再访问,如mytable将转换成MYTABLE;如果加了引号则以引号内的实际字符访问。
ORACLE在读取数据字典时只要发现对象名里有小写字母或者是除字母汉字以外开头的字符都认为是大小写敏感的,并且要求在访问时需要加上引号。
[align=right]叶正盛(MKing)[/align]
2007-7-29
[来自:http://blog.csdn.net/yzsind/archive/2007/07/29/1714869.aspx]
相关文章推荐
- ORACLE对象名大小写敏感性相关的深入分析
- ORACLE对像名大小写敏感性相关的深入分析
- ORACLE对像名大小写敏感性相关的深入分析
- Oracle内存全面分析(4)-1Oracle 的内存架构组成_1SGA.4共享池的内存管理(保留共享池和keep对象在共享池)、相关参数和视图
- Android关于Theme.AppCompat相关问题的深入分析 6
- Objective-C 对象模式深入分析
- Android关于Theme.AppCompat相关问题的深入分析
- 深入分析JavaWeb 14 -- jsp九大内置对象
- Python对象体系深入分析
- 深入分析使用mysql_fetch_object()以对象的形式返回查询结果
- 深入分析php之面向对象
- JAVA随笔篇二(深入分析JAVA简单类型、String和对象的值传递和引用传递)
- Oracle - PGA自动管理原理深入分析及性能调整(6)
- Delphi动态事件深入分析(对象方法在调用的时候会传递一个隐含的Self指针,而该指针的值在EAX中。即左边第一个参数)
- 深入分析使用mysql_fetch_object()以对象的形式返回查询结果
- 深入分析Java对象的建构顺序
- 深入探讨:oracle中row_number() over()分析函数用法
- 深入分析JS原型链以及为什么不能在原型链上使用对象
- 深入分析JavaWeb Item14 -- jsp九大内置对象
- 深入Java对象的地址的使用分析