我有一个名为fn_export的函数,它的所有者是bhist。我使用bhist.fn_export从ohist用户调用此函数。在这样打电话时,我面临着以下问题。
ORA-00942: table or view does not exist
ORA-06512: at "bhist.fn_export", line 442
ORA-06512: at line 20
我尝试验证该函数中的所有表,并且我能够从ohist访问所有这些表。我在bhist.fn_export上执行授权给ohist。我仍然有这个问题。你们中的任何人都可以帮忙解决这个问题吗?
谢谢, Venkat
答案 0 :(得分:1)
您需要向EXECUTE
用户授予此ohist
权限。{
语法是:
GRANT EXECUTE ON function_name TO username;
您可以作为bhist
用户进行连接,并使用以下方式授予权限:
GRANT EXECUTE ON fn_export TO ohist;
您也可以作为SYS或SYSTEM连接,并使用此命令:
GRANT EXECUTE ON bhist.fn_export TO ohist;
请参阅下面的简单示例(一个用户名为TEST
,另一个用户名为DEV
):
SQL> connect test
Enter password:
Connected.
SQL> CREATE FUNCTION fn_export RETURN number AS
2 BEGIN
3 RETURN 20;
4 END;
5 /
Function created.
SQL> connect dev
Enter password:
Connected.
SQL> SELECT test.fn_export FROM dual;
SELECT test.fn_export FROM dual
*
ERROR at line 1:
ORA-00904: "TEST"."FN_EXPORT": invalid identifier
SQL> connect test
Enter password:
Connected.
SQL> grant execute on fn_export to dev;
Grant succeeded.
SQL> connect dev
Enter password:
Connected.
SQL> SELECT test.fn_export FROM dual;
FN_EXPORT
----------
20
SQL>