2013-10-08 22 views
0

从Apex中的页面进程中,我试图调用驻留在我的oracle数据库中的一个包中的函数。我能够调用过程通过以下调用:从apex页面进程调用pl/sql函数

#OWNER#.package_name.procedure_name(p1 => p2); 

据的要求之一,我要检查特定功能是否返回true或false,并相应地执行操作。所以对于PL/SQL源(顶点)我想要这样的:

BEGIN 

IF (#OWNER.package_name.function_name(p1)) THEN 
--do something 

END; 

但它说,该函数需要声明(获得心尖这个错误),我无法弄清楚我在哪里我错了。我对APEX真的很陌生,所以任何帮助,将不胜感激。如果有人知道任何教程,我可以从顶点页面了解更多关于访问pl/sql代码(在oracle数据库中)的信息,那真是太棒了!

+0

您可以添加到您的问题包规范。 –

+0

替换字符串包含有标签,不仅在开始处有一个。 – Tom

回答

0

您用来从APEX连接到数据库的用户是否有权执行该功能?

您可以以该用户的身份登录到数据库并尝试执行该功能吗?

您可以尝试为包含该函数的包创建一个PUBLIC SYNONYM,并尝试调用该包,而不使用该包所属模式的名称?

您可以检查该用户使用有权限(最好的身份登录该用户):

SELECT * 
    FROM user_tab_privs -- or dba_tab_privs if logged as sys etc. 
WHERE grantee = 'YOUR_USERNAME' 
    AND privilege = 'EXECUTE' 
    AND table_name = 'YOUR_PACKAGE_NAME' 
;