タスクを自動化するためのストアドプロシージャを作成しています。別のユーザーのスキーマにあるビューからデータを選択する必要があります。他のスキーマのビューを使用するためのOracleストアドプロシージャ
私はストアドプロシージャの外でそのビューからデータを照会することはできますが、明らかに私のスキーマの下にあるSPでは照会できません。
これは設計によるものですか、何か不足していますか?回避策はありますか?
おかげ
タスクを自動化するためのストアドプロシージャを作成しています。別のユーザーのスキーマにあるビューからデータを選択する必要があります。他のスキーマのビューを使用するためのOracleストアドプロシージャ
私はストアドプロシージャの外でそのビューからデータを照会することはできますが、明らかに私のスキーマの下にあるSPでは照会できません。
これは設計によるものですか、何か不足していますか?回避策はありますか?
おかげ
もっと問題を解明しようとしている答えよりコメント。答えは、次のコードまたはBoneistのコメントにあると思います。
ビューに必要な権限を与えても、別のスキーマからビューを照会するときにSPが機能しない理由はありません。例えば
、私は、スキーマのHRでビューを作成して、私のユーザーに
SQL> conn hr/###@xe
Connected.
SQL> create or replace view testView as select 1 as one from dual;
View created.
SQL> grant select on testView to alek;
Grant succeeded.
をSELECT
権限を与えた後、私は、私のスキーマの中から自分のスキーマに
SQL> conn alek/###@xe
Connected.
SQL> create or replace procedure testSelectView is
2 begin
3 for i in (select * from hr.testView) loop
4 dbms_output.put_line(i.one);
5 end loop;
6 end;
7/
Procedure created.
を手順を構築している場合クエリとプロシージャの両方の作業:
SQL> select * from hr.testView;
ONE
----------
1
SQL> exec testSelectView;
1
PL/SQL procedure successfully completed.
特権の問題。 PL/SQLブロック内には、に直接が付与されている権限しかありませんが、ロール(たとえば、DBA
ロール)によって付与された権限は適用されません。
実行grant select on ... to ...;
またはgrant select any table to ...;
の場合、動作するはずです。
コードバディを投稿してください! – JT4U
[help/on-topic]から: "質問のデバッグに役立つ質問(「なぜこのコードは機能しませんか?)」には、問題の内容、エラー、および質問自体に再現するのに必要な最短コード明確な問題文がない質問は、他の読者にとっては有用ではありません。参照:[mcve]を作成する方法。 – Aleksej