Oracle Apex: код Javascript в блоке PL / SQL

возможно ли иметь код JavaScript в блоке PL/SQL. Я хочу выполнить блок pl/sql, содержащий код JavaScript, при отправке в процессе страницы Oracle Apex.

DECLARE
  v_count   NUMBER;

  BEGIN
        select count(*) into v_count
        from summary
        where prd_items = 'Total';

 HTP.p ('<script type="text/javascript">');
 HTP.p (   'alert(''The value of Total for BU is ' ||v_count|| '.n'
      || 'You have to enter correct values to proceed further n'');');
 HTP.p ('</script>');
END; 

Я Submit кнопка в моей области страницы, и этот блок pl / sql является элементом обработки страницы и выполняется на странице submit (Conditional:Submit).

но я не могу всплывающее окно оповещения. Посоветуйте, пожалуйста.

спасибо.

2 ответов


возможно ли иметь код JavaScript в блоке PL/SQL?

  • да

но то, что вы пытаетесь сделать, не будет работать, что передает функцию javascript после отправки.Это будет работать, только если вы измените точку выполнения на AFTER HEADER.

кроме того, если вы просто хотите проверить введенные значения и не хотите использовать проверку apex, вы можете использовать пакет APEX_ERROR.Пытаться этот.

DECLARE
  v_count   NUMBER;

  BEGIN
        select prd_items into v_count
        from summary
        where prd_items = 'Total';
        -- I dont really know what you want to 
        --accomplish with this query but Im pretty sure 
        --It will not return a number
        -- if you want to count the number of prd_items it should be like this
        --select COUNT(*) 
        --into v_count
        --from summary
        --where prd_items = 'Total';


    APEX_ERROR.ADD_ERROR(
      p_message            => 'The value of Total for BU is '||v_count||'.<br>'||
                              'You have to enter correct values to proceed further',
      p_display_location   => apex_error.c_inline_in_notification 
    );  

END; 

EDIT: если вы хотите показать ошибку, если количество не равно 100, то сделайте что-то вроде этого:

DECLARE
  v_count   NUMBER;

  BEGIN

     Select COUNT(*) 
     into v_count
     from summary
     where prd_items = 'Total';

  IF v_count != 100 THEN
    APEX_ERROR.ADD_ERROR(
      p_message            => 'The value of Total for BU is '||v_count||'.<br>'||
                              'You have to enter correct values to proceed further',
      p_display_location   => apex_error.c_inline_in_notification 
    );  


 END IF;
END; 

чтобы внедрить код javascript из процедуры pl/sql, вам нужно будет поместить процедуру в точку "перед заголовком". Но я не думаю, что это лучшее решение для того, что вы пытаетесь достичь.

что вы пытаетесь сделать, это добавить право проверки? Если да, то почему бы не использовать проверки apex. Создайте проверку с такими параметрами:

  1. определите уровень проверки: элемент страницы
  2. определить элемент страницы, который должен быть проверен: Выберите нужный элемент.
  3. выберите тип проверки: PL / SQL
  4. выберите тип проверки, который вы хотите создать: функция, возвращающая текст ошибки
  5. Код Подтверждения:
    DECLARE  v_count          NUMBER;
  V_validation_msg VARCHAR2(500);
BEGIN
  SELECT prd_items INTO v_count FROM summary WHERE prd_items = 'Total';
  V_validation_msg:='The value of Total for BU is ' ||v_count|| '.\n' || 'You have to enter correct values to proceed further';
  IF 1= 1 THEN --add some condition here if you want
    RETURN V_validation_msg;
  ELSE
    RETURN NULL;
  END IF;
END;
  1. при нажатии кнопки: ваша кнопка отправки.