问题描述:
A用户下创建一个存储过程proc_1。该存储过程需要访问用户B下的表t1
create table t1 as select * from B.t1
用户A执行proc_1存储过程可以成功,但是使用job调用该存储过程报错ORA-00942:table or view does not exist
问题分析:
存储过程被job调用期间失去了所属用户A的权限(访问用户B的表)
解决方法:
1. 显示授权。应用程序维护人员喜爱这种简单有效的方法。
grant select any table to A;
2. 在存储过程中添加关键字
CREATE OR REPLACE PROCEDURE proc_1
(
name VARCHAR2)
Authid Current_User
AS
BEGIN
EXECUTE IMMEDIATE 'SET ROLE ALL';
...
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29047826/viewspace-1607104/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29047826/viewspace-1607104/