一个奇怪的问题引出oracle对象名的大小写

遇到的问题:
一 用工具建了个表t_aaa(工具生成的create table语句自动为表名加上了引号);然后执行
[quote]select * from t_aaa[/quote]
结果提示“表或视图不存在”;
二 有表A,含列id(列id为小写);执行
[quote]select id from A[/quote]
提示“ORA-00904: invalid identifier”

结论:
[color=red]1 oracle在创建对象时,字符都变为大写,[b]除非他被"引住[/b]。

2 查找对象时,对象名前后不带双引号,oracle自动去查找名字全是大写的对象;

3 如果创建对象时对象名是被"引住的,则对象名严格按引号里的大小写来;并且在操作该对象时也必须为其名字加"(因为第2条)。[/color]


所以,可以说,[color=red]oracle的对象名(表、视图、过程、列名等)是区分大小写的;DDL的双引号影响数据字典里的大小写[/color]。比如表,如果是表名叫t_aaA,则通过
[quote]select * from t_aaa[/quote]
[quote]select * from t_aaA[/quote]
[quote]select * from "t_aaa"[/quote]
都是会提示你“表或视图不存在”的;正确的查询方式是:
[quote]select * from "t_aaA"[/quote]

测试用例一:
[img]http://dl.iteye.com/upload/attachment/166406/25b8933b-ce97-3f2f-973d-937658df74da.png[/img]

测试用例二:
[img]http://dl.iteye.com/upload/attachment/166404/eb0dc255-cc7f-3e0f-a9f5-1f3c6398b88b.png[/img]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值