2013-10-08 4 views
0

Из процесса страницы в Apex я пытаюсь вызвать функцию, которая находится в пакете в моей базе данных оракула. Я могу вызвать процедуру следующего вызова:Вызов функции pl/sql из процесса страницы apex

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

Согласно одному из требований, я должен проверить, возвращает ли конкретная функция истинной или ложной и выполнять действия соответственно. Таким образом, для PL/SQL источника (в вершине) я пытаюсь это:

BEGIN 

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

END; 

Но он говорит, что функция должна быть объявлена ​​(получаю эту ошибку в вершине), я не могу понять, куда я Я ошибаюсь. Я действительно новичок в APEX, поэтому любая помощь будет оценена по достоинству. А также, если кто-нибудь знает какие-либо учебники, где я могу узнать больше о доступе к PL/SQL-коду (в oracle db) с apex-страниц, это было бы очень здорово!

+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' 
;