2013-10-08 1 views
0

A partir d'un processus de page dans Apex, j'essaie d'appeler une fonction qui réside dans un paquet dans ma base de données Oracle. Je suis en mesure d'appeler une procédure avec l'appel suivant:Appel d'une fonction pl/sql à partir d'un processus de page apex

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

Selon l'une des exigences, je dois vérifier si une fonction particulière renvoie true ou false et effectuer des actions en conséquence. Donc, pour le pl/source sql (en pointe) J'essaie ceci:

BEGIN 

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

END; 

Mais il dit la fonction doit être déclarée (obtenir cette erreur dans le sommet), je ne suis pas en mesure de savoir où am Je me trompe. Je suis vraiment nouveau à l'APEX, donc toute aide serait appréciée. Et aussi si quelqu'un connaît des tutoriels où je peux en apprendre plus sur l'accès au code pl/sql (en oracle db) à partir de pages apex, ce serait vraiment génial!

+0

Pouvez-vous ajouter à votre question la spécification du package. –

+0

les chaînes de substitution sont entourées de hashtags, et pas seulement une au début. – Tom

Répondre

0

L'utilisateur que vous utilisez pour vous connecter à la base de données à partir d'APEX a-t-il le privilège d'exécuter cette fonction?

Pouvez-vous vous connecter à votre base de données en tant qu'utilisateur et essayer d'exécuter cette fonction?

Pouvez-vous essayer de créer un PUBLIC SYNONYM pour le paquet qui contient la fonction et essayer de l'appeler sans le nom du schéma auquel appartient le paquet?

Vous pouvez vérifier si l'utilisateur dispose des droits en utilisant (meilleur connecter en tant que utilisateur):

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' 
; 
Questions connexes