拥有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/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/3898/viewspace-786807/