Оповещение от PLSQL в Oracle Apex - PullRequest
0 голосов
/ 04 ноября 2019

Я хочу отобразить предупреждающее сообщение от PLSQL, если выполняется определенное условие. Однако это не работает.

Пожалуйста, проверьте мой код PLSQL, который я написал в динамическом действии, при установке флажка.

declare
var_hire DATE ;
tenure_dt DATE;
i number;
TENURE EXCEPTION;
BEGIN
SELECT HIREDATE INTO var_hire from employee where empno=107;
-- APEX_APPLICATION.G_F01(1);
SELECT var_hire+ INTERVAL '1' YEAR INTO  tenure_dt FROM DUAL;
 IF SYSDATE < to_Date(tenure_dt,'DD-MON-YY') THEN

 /* APEX_ERROR.ADD_ERROR (
p_message  => 'The employee cannot be deleted',
p_display_location => apex_error.c_inline_in_notification );*/
apex_application.g_global_notification( 'The employee cannot be deleted');
END IF ;
END  ;

declare
var_hire DATE ;
tenure_dt DATE;
i number;
TENURE EXCEPTION;
BEGIN
SELECT HIREDATE INTO var_hire from employee where empno=107;
-- APEX_APPLICATION.G_F01(1);
SELECT var_hire+ INTERVAL '1' YEAR INTO  tenure_dt FROM DUAL;


    APEX_ERROR.ADD_ERROR (
    p_message  => 'The employee cannot be deleted',
    p_display_location => apex_error.c_inline_in_notification );



EXCEPTION
WHEN TENURE THEN 
RAISE_APPLICATION_ERROR(-20000,'CANNOT BE DELETED');
END  ;

1 Ответ

0 голосов
/ 06 ноября 2019

Вы можете создать Ajax callback process с вашим PL / SQL CODE. Например, создайте процесс обратного вызова Ajax как MyQuery

declare
var_hire DATE ;
tenure_dt DATE;
i number;
TENURE EXCEPTION;
BEGIN
    SELECT HIREDATE INTO var_hire from employee where empno=107;
    SELECT var_hire+ INTERVAL '1' YEAR INTO  tenure_dt FROM DUAL;
         IF SYSDATE < to_Date(tenure_dt,'DD-MON-YY') THEN
            HTP.P('The employee cannot be deleted');    
         END IF ;
END  ;

, а затем создайте динамическое действие ('Выполнить код JavaScript) на вашем флажке с ниже javascript code

apex.server.process('MyQuery', { },
   {
      dataType: "text",
      success: function(pData) {
         if (pData != "") {
            apex.message.alert(pData);
         }
      }
  });
...