Персонализация формы Oracle Вызов пользовательской процедуры - PullRequest
0 голосов
/ 14 октября 2019

Я делаю персонализацию формы в модуле управления персоналом. Мое требование - когда конечный пользователь пытается завершить работу, чем должна выполняться процедура, и проверьте условие, если оно не выполнено, то в форме внешнего интерфейса должно отображаться сообщение об ошибке.

Я использую эту процедуру: =

CREATE OR REPLACE PROCEDURE validate_terminate IS    
   u_id    NUMBER := fnd_global.user_id;    
   e_id    NUMBER;    
   p_id    NUMBER;    
   l_yes   VARCHAR2 (1);    
   null_found EXCEPTION;    
BEGIN    
   SELECT   EMPLOYEE_ID    
     INTO   e_id    
     FROM   fnd_user    
    WHERE   user_id = u_id;    

   SELECT   person_id    
     INTO   p_id    
     FROM   per_all_people_f    
    WHERE   person_id = e_id;    

   SELECT   'Y'    
     INTO   l_yes    
     FROM   DUAL    
    WHERE   EXISTS    
               (SELECT   'Y'
                  FROM   pa_expenditure_items_all paei,
                         pa_expenditures_all pae    
                 WHERE   paei.expenditure_id = pae.expenditure_id
                   AND pae.incurred_by_person_id = p_id    
                   AND paei.cost_distributed_flag = 'N');

   IF l_yes = NULL THEN    
      dbms_output.put_line ('USER CANNOT PERFORM TERMINATE');    
     RAISE null_found;    
   END IF;    
EXCEPTION    
   WHEN null_found THEN    
      dbms_output.put_line ('CONDITION IS NOT MET');    
      dbms_output.put_line ('CANNOT PROCESS TERMINATE');    
   WHEN no_data_found THEN    
      dbms_output.put_line ('CONDITION IS NOT MET');    
      dbms_output.put_line ('CANNOT PROCESS TERMINATE');    
END;

Процедура работает нормально, но я не могу выполнить ее в интерфейсе

, как я делаю это нижескриншоты

[интерфейс от] [1]

[изображение вкладки ACTION] [2]

, но процедура не выполняется.

1 Ответ

0 голосов
/ 15 октября 2019

dbms_output.put_line отображается только в pl / sql, если включен serveroutput. Вы не увидите эти сообщения в формах оракула. ​​

Вы должны использовать message или alert, а затем

raise form_trigger_failure
...