2009-09-03 3 views
1

パブリック・シノニムへの参照をOracleのパッケージまたはストアド・プロシージャに一時的に追加しようとしてきましたが、この問題の解決策が表に直接アクセスできないのかどうか疑問に思っています。例:Oracle 10:ストアド・プロシージャまたはパッケージ内の表のパブリック・シノニムにアクセスできますか?

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 

感謝を。

答えて

2

プロシージャを作成しているれているスキーマが直接 SELECT PRIVS持っています(ロール経由すなわちないの?)

プロシージャ(ファンクション/パッケージ)を作成すると、テーブル上の権限をする必要があります直接付与され、役割によって付与されない。

+0

私はDBAと話をしましたが、ユーザーは他のスキーマの基礎となる表に直接選択権限を与えましたが、引き続きORA-00942エラーが発生します。 – Horus

+0

実際には、私はDBAに行く前に、これを動作させるためにコードモッドを実行しました。それはエラーを引き起こしていました。あなたの解決策(基底のprivsを確認して、 – Horus

関連する問題