Plsql PL/SQL:存储过程中不同用户的访问视图

Plsql PL/SQL:存储过程中不同用户的访问视图,plsql,view,grant,Plsql,View,Grant,下午好 我在ORACLE数据库中有两个用户,USER1和USER2 USER2有一个视图VIEW1,我希望USER1中的一个过程通过光标访问VIEW1,如下所示: create or replace procedure PROCEDURE1 is CURSOR C_CURSOR IS select * from USER2.VIEW1; BEGIN RETURN; end PROCEDURE1;

下午好

我在ORACLE数据库中有两个用户,USER1和USER2

USER2有一个视图VIEW1,我希望USER1中的一个过程通过光标访问VIEW1,如下所示:

    create or replace procedure PROCEDURE1   is
        CURSOR C_CURSOR
        IS

        select * from USER2.VIEW1;

      BEGIN
        RETURN; 
   end PROCEDURE1;
然而,当我试图编译过程1时,我得到了错误:

ORA-01031-隐私不足

但是,我只在存储过程中得到此错误,因为我可以从USER1中很好地执行以下查询:

select * from USER2.VIEW1;
你能告诉我我做错了什么吗


非常感谢

见托尼·安德鲁斯对这个问题的评论


必须通过角色间接授予USER1访问权限。创造 它需要显式权限授予的过程选择 user2.view1到user1;——托尼·安德鲁斯2017年8月16日16:01


(不,我不是在追求声誉;我只是想让它退出未应答队列)

USER1必须通过角色间接获得访问权限。要创建过程,它需要显式权限
将user2.view1上的select授予user1非常感谢!我以前试过,但是我不能,因为USER2.VIEW1是从第三个用户USER3的表中选择的。我最终通过使用grant选项将表上的select从USER3授予USER2获得了它。