ITPub博客

首页 > 数据库 > Oracle > 大小写问题

大小写问题

原创 Oracle 作者:orclzhang 时间:2007-09-14 11:16:56 0 删除 编辑

遇到一个大小写问题,发贴求助。后来得到答案。

我是刚学习oracle没几天的新手,我遇到一个问题。
在sql*plus中输入:
SQL> create role r01;

Role created.

SQL> grant create table to r01;

Grant succeeded.

SQL> grant r01 to zhang;

Grant succeeded.

SQL> select * from ROLE_SYS_PRIVS where ROLE='r01';

no rows selected

当输入SQL> select * from ROLE_SYS_PRIVS WHERE ROLE='R01';
显示出我想要的结果
我想问,当时我建立用户时是小写的r01,为什么查询从
role_sys_privs中查询这个用户相关的资料时却要用大写的R01才可以?
select * from user_constraints where table_name='EMP';这个也是,我当时建立table emp时用的也是小写,但是从user_constraints 中查询时用大写才有结果,这是???
回复:most(99%) of oracle dictiionary table uses upper case to store data. it is oracle naming rule

回复:

在Oracle数据字段默认都是以大写存储对象名的
如果要存储小写,在建立对象的时候要加双引号
create table "test" AS SELECT * FROM DUAL;

那么这个test在数据字段里就是小写的

然后在从test表查询记录的时候,也要加上双引号
如果不加双引号,那么会被自动转成大写,从而与数据字段存储的表名不匹配,也就是找不到
会提示对象不存在

加了双引号,其实就是不转换成大写

今天输入两条语句实验了一下
select empid||empname as "idname" from emp;
和select empid||empname as idname from emp;
结果显示是不同的
加了引号结果显示idname为小写,不加是大写,以后慢慢体会。

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11239092/viewspace-969375/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 无法启动dbconsole
下一篇: ping
请登录后发表评论 登录
全部评论
  • 博文量
    10
  • 访问量
    153430