Как заставить экран перестать «яйцекладку» двигаться дальше при обработке кода в фоновом режиме - PullRequest
1 голос
/ 21 мая 2019

У меня есть небольшое приложение экспресс-приложение.Он запускает некоторый код, выполнение которого занимает около 12 минут.(Мне не нужна помощь в этом, спасибо), но мне интересно, есть ли способ заставить экран двигаться дальше, пока код завершается?

У меня есть "После отправки «Процесс, это тип« PL / SQL Code », а в параметрах выполнения я имею« После отправки ».Код представляет собой анонимный блок, который выполняет некоторые проверки, а затем выполняет некоторые хранимые процедуры.

Триггер для этого - кнопка «NEXT» в приложении.Однако нажатие кнопки «NEXT» приводит к базовому эффекту «зависания», в то время как вращающаяся анимация «таймер яйца» просто запускается и работает до тех пор, пока код не начнет работать.

Есть ли способ заставить экран перейти к следующей странице, пока код выполняется в фоновом режиме, и пользователю не нужно ждать?Спасибо!

1 Ответ

3 голосов
/ 21 мая 2019

Конечно; запланировать процедуру как задание базы данных . Простой вариант - использовать DBMS_JOB. Например, если вы поместите свой код в хранимую процедуру (назовем его P_SCOUSE), то вы

declare
  l_job number;
begin
  dbms_job.submit(job        => l_job,
                  what       => p_scouse,
                  next_date  => sysdate,
                  interval   => null);
  commit;
end;

Процедура будет выполняться в фоновом режиме, что позволит вам делать все, что вы хотите в приложении Apex.

Также проверьте, что предлагает DBMS_SCHEDULER. Он новее, чем DBMS_JOB, имеет некоторые дополнительные опции, но - как я уже сказал - для такой простой вещи, DBMS_JOB делает работу .

...