2017-08-16 75 views
2

下午好,PL/SQL:存儲過程中不同用戶的訪問視圖

我在ORACLE數據庫USER1和USER2中有2個用戶。

USER2有一個觀點VIEW1,我想在USER1的程序通過遊標訪問VIEW1,像這樣:

create or replace procedure PROCEDURE1 is 
     CURSOR C_CURSOR 
     IS 

     select * from USER2.VIEW1; 

     BEGIN 
     RETURN; 
    end PROCEDURE1; 

然而,當我嘗試編譯PROCEDURE1,我得到的錯誤:

ORA-01031 - 沒有足夠的privelieges

但是,我只得到這個錯誤的存儲過程中,我能做到下面的查詢從USER1就好:

select * from USER2.VIEW1; 

你能告訴我我做錯了什麼嗎?

非常感謝!

+2

USER1必須已被授予訪問間接地通過一個角色。要創建該過程,需要明確的權限'grant select user2.view1 to user1;' –

+0

非常感謝!我曾嘗試過,但我不能因爲USER2.VIEW1從第三位USER,USER3的表中選擇。我終於通過授予選項從USER3授予USER2到USER2上的選擇。 – miduarte

回答

0

查看Tony Andrews對此問題的評論。

USER1 must have been granted access indirectly, via a role. To create the procedure it needs the explicit privilege grant select on user2.view1 to user1; – Tony Andrews Aug 16 '17 at 16:01

(不,我不是撈名聲,我只是想這退學未應答隊列)