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

Ers*_*har 6 oracle privileges grant

我想给用户一个权限来调用另一个用户函数的函数.

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

但它不起作用.

用户需要调用此:

call XXX.YYY.AlterAllInvalidObjects(NULL,'PACKAGE BODY');
Run Code Online (Sandbox Code Playgroud)

但我怎么能给予补助金?

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

Rap*_*aus 7

GRANT EXECUTE ANY PROCEDURE TO user;
Run Code Online (Sandbox Code Playgroud)

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';
Run Code Online (Sandbox Code Playgroud)

并复制粘贴 - 执行结果...

或使用SP做同样的事情(光标在查询上并在循环中立即执行)