我想授予用户调用其他用户功能的功能。
我写这个:GRANT EXECUTE ANY FUNCTION TO user;
但它没有用。
用户需要调用此方法:
call XXX.YYY.AlterAllInvalidObjects(NULL,'PACKAGE BODY');
但我怎样才能给予补助?
注意:我不想使用:GRANT EXECUTE ON FUNCTION AlterAllInvalidObjects TO user;
我需要通用解决方案而不是特定的功能名称。
答案 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