大小写问题

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

我是刚学习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/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/11239092/viewspace-969375/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值