Oracle:对函数的调用很奇怪

时间:2015-11-12 15:02:43

标签: oracle stored-procedures plsql

如果在所有者帐户下调用,则以下语法可以正常工作:

where (@budgetid = 7 and budgetid = 7)
   or (@budgetid = 8 and budgetid = 6)

但是当从另一个用户调用时,我收到以下错误:

SELECT "MY_OWNER"."MY_PACKAGE".Convert(t.Value) FROM My_Table t

其中列:?? 指向

ORA-00904: : invalid identifier
00904. 00000 -  "%s: invalid identifier"
*Cause:    
*Action:
Error at Line: 1 Column: ??

我做错了什么?

更新。正在调用函数

SELECT "MY_OWNER"."MY_PACKAGE".Convert(t.Value) FROM My_Table t
                  ⇑ 

1 个答案:

答案 0 :(得分:7)

您需要将此程序包的权限授予其他用户

GRANT EXECUTE ON MY_OWNER.MY_PACKAGE TO the_other_user;

您还应该检查a_horse_with_no_name是否正确。这是一个可以按照指定的方式调用的函数,也可以是以这种方式调用的过程

DECLARE
v_value VARCHAR2(10);
BEGIN
MY_OWNER.MY_PACKAGE.CONVERT(v_value);
END;

同时检查包以查看定义了哪些权限。当前用户或包所有者。可以找到更多详细信息here