如何向用户提供,执行其他用户的功​​能?

时间:2012-09-13 09:25:50

标签: oracle privileges grant

我想授予用户调用其他用户功能的功能。

我写这个:GRANT EXECUTE ANY FUNCTION TO user;

但它没有用。

用户需要调用此方法:

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

但我怎样才能给予补助?

注意:我不想使用:GRANT EXECUTE ON FUNCTION AlterAllInvalidObjects TO user; 我需要通用解决方案而不是特定的功能名称。

2 个答案:

答案 0 :(得分:7)

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做同样的事情(游标在查询上并立即执行循环)

答案 1 :(得分:0)

说实话,看起来你问的是同义词,而不是授权,因为授权不会帮助你调用AlterAllInvalidObjects而不提及架构。请考虑一下http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_7001.htm