我想授予用户权限以调用另一个用户函数。
我写这个:GRANT EXECUTE ANY FUNCTION TO user;
但它不起作用。
用户需要调用这个:
call XXX.YYY.AlterAllInvalidObjects(NULL,'PACKAGE BODY');
但我怎样才能给予补助?
注意:我不想使用:GRANT EXECUTE ON FUNCTION AlterAllInvalidObjects TO user;
我需要通用解决方案而不是特定的函数名称。
我想授予用户权限以调用另一个用户函数。
我写这个:GRANT EXECUTE ANY FUNCTION TO user;
但它不起作用。
用户需要调用这个:
call XXX.YYY.AlterAllInvalidObjects(NULL,'PACKAGE BODY');
但我怎样才能给予补助?
注意:我不想使用:GRANT EXECUTE ON FUNCTION AlterAllInvalidObjects TO user;
我需要通用解决方案而不是特定的函数名称。
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 做同样的事情(查询上的光标并立即在循环中执行)
老实说,您似乎在询问同义词,而不是授权,因为授权无法帮助您在不提及架构的情况下调用调用 AlterAllInvalidObjects。请考虑一下http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_7001.htm