更改当前schema

更改当前schema  2007-08-24 16:19:04

分类: Oracle

在session中,更改当前schema而不重新登陆。

可适用于使用system用户管理其他用户下的数据,而不必在每个表前都加上schema限定词。

[@more@]

在SQL语句中指定对象时,如果不限定对象所在schema,则会使用当前连接用户schema下的对象。通过更改当前session的schema,我们可以在不进行schema限定的情况下,直接引用其他schema下的对象。

尽管public也是oracle中的一个特殊的schema,我们不能将当前schema更改为public。oracle会报告一个错误:ORA-02421: missing or invalid schema authorization identifier

使用system连接,可以运行以下语句来更改当前schema为SCOTT:
alter session set current_schema = 'SCOTT';

但是,此语句并不会更改当前USER。此session的user还是system:
select user from dual;

current_schema切换为了scott:
select sys_context('USERENV', 'CURRENT_SCHEMA') from dual;

当current_schema=scott时,执行的任何操作都相当于是scott在做。只要当前user有权限做这些事情,
则可以在scott用户下创建对象,插入记录,删除记录等。

对于使用system用户进行管理,是很方便的!

如果函数、过程、包在创建时使用了AUTHID CURRENT_USER选,则当其他用户调用此函数、过程、包时,使用current_schema的对象、权限执行。(此特性未亲自验证,只是从手册中和metalink上相关文章中得知。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值