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 回答