1

しばらくの間、Oracle のパッケージまたはストアド プロシージャにパブリック シノニムへの参照を追加しようとしましたが、テーブルに直接アクセスする以外にこの問題の解決策があるかどうか疑問に思っています。例えば:

CREATE OR REPLACE PROCEDURE test_func AS
  test_int INTEGER;<br>
BEGIN<br>
  select count(*) INTO test_int FROM test_synonym;
END;
/

この手順が何もしないことはわかっていますが、これは単なる例です。テーブル「test_synonym」は、実際には別のスキーマ内のテーブルに対するパブリック シノニムです。そのテーブルへの選択権限はありますが、これを繰り返しコンパイルしようとするとエラーが発生します。

Error(5,38): PL/SQL: ORA-00942: table or view does not exist

御時間ありがとうございます。

4

1 に答える 1

2

プロシージャを作成しているスキーマには、直接SELECT特権がありますか(つまり、ロールを介してではありませんか?)

プロシージャ(関数/パッケージ)を作成するときは、テーブルに対するアクセス許可を、ロールを介して付与するのではなく、直接付与する必要があります。

于 2009-09-03T19:45:14.153 に答える