如果在所有者帐户下调用,则以下语法可以正常工作:
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
⇑
答案 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