2017-08-16 5 views
2

午後、ストアド・プロシージャ内の異なるユーザーのビューへのアクセス

私はORACLEデータベースUSER1およびUSER2に2人のユーザーを持っています。

USER2は、ビューVIEW1を持っている、と私はこのような、カーソルを通じてVIEW1にアクセスするにはUSER1の手順をしたい:私はPROCEDURE1をコンパイルしようとすると、私はエラーを取得し、

create or replace procedure PROCEDURE1 is 
     CURSOR C_CURSOR 
     IS 

     select * from USER2.VIEW1; 

     BEGIN 
     RETURN; 
    end PROCEDURE1; 

をしかし:

ORA-01031 - 私はUSER1からうまく次のクエリを行うことができますよう不十分priveliegesは

しかし、私は、ストアドプロシージャ内でこのエラーが出る:

select * from USER2.VIEW1; 

私が間違っていることを教えてもらえますか?

ありがとうございます!

+2

USER1が役割を経由して、間接的にアクセスを許可されている必要があります。このプロシージャを作成するには、明示的な権限が必要です。「user2.view1からuser1へのgrant select」; –

+0

ありがとうございます!私はそれを前に試してみましたが、USER2.VIEW1が第3のUSER USER3のテーブルから選択していたので、私はできませんでした。私は最終的に、USER3からUSER2へのテーブルのselectをgrantオプションで与えることでそれを得ました。 – 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

(いいえ、私は評判のための釣りではないよ。私は、これは未解決のキューの外にドロップします)

関連する問題