ITPub博客

首页 > 应用开发 > IT综合 > 关于当前模式current_schema的切换问题

关于当前模式current_schema的切换问题

原创 IT综合 作者:yaanzy 时间:2005-01-12 10:59:21 0 删除 编辑
我们有时会在用户A下调用用户B下的存储过程,去用户B下的表的数据,但是这要求用户A
拥有B下相关表的权限,并且在处理表时指定好表的模式
通常的做法是在写存储过程时写出表的模式,例如:SCOTT.DEPT,但是有时存储过程没有
这样写,而又不想改程序,还有一个方法就是在调用存储过程前设置current_schema[@more@]

例如,把scott.dept的select权限授予hr用户
sqlplus scott/tiger

SQL>grant select on dept to hr;

然后用hr用户登录
sqlplus hr/hr

SQL> select count(*) from scott.dept;

  COUNT(*)
----------
         4

SQL> select count(*) from dept;
select count(*) from dept
                     *
ERROR at line 1:
ORA-00942: table or view does not exist


SQL> alter session set current_schema=scott;

Session altered.

SQL> select count(*) from dept;

  COUNT(*)
----------
         4

使用完毕后再设置回当前用户为当前模式

SQL> alter session set current_schema=hr;

查看当前用户和当前模式
SQL>select SYS_CONTEXT('USERENV','CURRENT_USER') CURRENT_USER ,
           SYS_CONTEXT('USERENV','CURRENT_SCHEMA') CURRENT_SCHEMA from dual;

CURRENT_USER              CURRENT_SCHEMA
------------------------- ------------------------------------
HR                        SCOTT

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

请登录后发表评论 登录
全部评论
  • 博文量
    108
  • 访问量
    761550