遇到的问题:
一 用工具建了个表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]
一 用工具建了个表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]