Я новичок в Developer2000. У меня есть процедура Oracle pl/sql (скажем, proc_submit_request), которая извлекает тысячи запросов и отправляет их планировщику dbms_job. Вызов dbms_job
кодируется внутри цикла для каждого извлеченного запроса.
В настоящее время у меня есть кнопка (скажем, кнопка SUBMIT) на экране форм оракула, нажатие которой вызывает proc_submit_request. Проблема здесь в том, что ... элемент управления не возвращается на мой экран до тех пор, пока ВСЕ полученные запросы не будут отправлены в dbms_job (для завершения требуется несколько часов). Экран становится серым, и до завершения процедуры появляются только песочные часы. proc_submit_request. proc_submit_appears возвращает на экран сообщение о том, что «запросы XXXX отправлены».
Теперь мое требование состоит в том, что после того, как пользователь нажмет кнопку SUBMIT, экран больше не должен быть серым. Пользователь должен иметь возможность переходить к другим экранам, а не просто нажимать на экран отправки, пока вызванная процедура не будет завершена.
Я предложил запускать прослушиватели (скрипты оболочки и вещи на Perl), которые могут прослушивать любые сообщения в канале и запускать запросы в качестве фонового процесса. Но пользователь просит меня исправить проблему в приложении, а не запускать прослушиватели.
Я немного слышал о встроенной OPEN_FORM. Предположим, у меня есть две формы, а именно Форма-1 и Форма-2. Форма-1 вызывает форму-2, используя OPEN_FORM. Теперь возможны ли следующие вещи с использованием OPEN_FORM?
При вызове open_form('Form-2',OTHER-ARGUMENTS...) управление должно быть в форме-1 (т.е. пользователь не должен знать, что открывается другая форма), а форма-2 должна вызывать proc_submit_request.
Пользователь должен иметь возможность переходить на другие экраны в приложении. Но форма-2 все еще должна работать, пока не завершится proc_submit_procedure.
Что произойдет, если пользователь закроет (выйдет) Form-1? Будет ли Form-2 по-прежнему работать?
Пожалуйста, дайте мне ответы или предложите хорошее решение.