好吧,我面对"权限不足"运行PL / SQL函数时出现问题:
以下是我遵循的步骤:在我的Windows命令提示符中,我按如下方式登录:
代码:
sqlplus / as sysdba
我得到了SQL>在那边提示,然后我试图授予我的功能和#34;年龄"如下:
代码:
SQL> GRANT EXECUTE on AGE to SCOTT;
其中,AGE是函数名称,SCOTT是用户
我参考以下文档:
http://www.techonthenet.com/oracle/grant_revoke.php
我收到错误ORA-0402:函数体不存在。如何在发出GRANT之前保存我的函数体?
请帮忙!
答案 0 :(得分:1)
为确保发出正确的授权,请在引用该函数时使用完全限定的[schema].[object]
名称。否则,您将依赖指向正确对象的公共同义词。该函数必须存在才能授予它,尽管它可能不是有效状态。您不能对不存在的对象发出授权(除了捕获所有EXECUTE ANY
授权,但这是一个特殊的数据库角色。)
例如,如果架构为FOOBAR
且函数名称为AGE
,那么您将发出:
GRANT EXECUTE ON foobar.age TO scott
此外,使用此功能时请确保:
SCOTT
有一个指向FOOBAR.AGE
的本地同义词)FOOBAR.AGE()
要检查函数本身是否有效,您可以查询ALL_OBJECTS
并查看STATUS
列:
SELECT status
FROM all_objects
WHERE owner = 'FOOBAR'
AND object_type = 'FUNCTION'
AND object_name = 'AGE'