6

関数を別のユーザー関数を呼び出すための特権をユーザーに付与したい。

私はこれを書きます:GRANT EXECUTE ANY FUNCTION TO user;

しかし、それは機能しません。

ユーザーはこれを呼び出す必要があります:

call XXX.YYY.AlterAllInvalidObjects(NULL,'PACKAGE BODY');

しかし、どうすれば助成金を与えることができますか?

注:使用したくない:GRANT EXECUTE ON FUNCTION AlterAllInvalidObjects TO user; 特定の関数名ではなく、一般的なソリューションが必要です。

4

2 に答える 2

8
GRANT EXECUTE ANY PROCEDURE TO user;

http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_9013.htm#i2077938

機能と手順の両方を管理します。関数だけにその方法を許可することはできません...

編集

他の方法(ただし、他のユーザーがすべての許可を取得するために新しい関数を作成するたびに実行する必要があります):

走る

select 'GRANT EXECUTE ON '||owner||'.'||object_name||' TO user;'
from all_objects
where owner = 'xxx'
and object_type='FUNCTION';

そしてコピー-貼り付け-結果を実行します...

または、同じことを行うSPを使用します(クエリにカーソルを置き、ループ内ですぐに実行します)

于 2012-09-13T09:31:01.500 に答える
0

正直なところ、付与ではなく同義語について質問しているように見えます。これは、付与はスキーマに言及せずにAlterAllInvalidObjectsの呼び出しを呼び出すのに役立たないためです。http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_7001.htmについて検討してください

于 2012-09-13T11:26:26.453 に答える