私は Developer2000 の初心者です。何千ものリクエストを取得して dbms_job スケジューラに送信する Oracle pl/sql プロシージャ (proc_submit_request など) があります。dbms_job の呼び出しは
フェッチされたリクエストごとにループ内でコーディングされます。
現在、proc_submit_requestを呼び出すオラクルフォーム画面のクリックにボタン(たとえば、SUBMITボタン)があります。ここでの問題は...フェッチされたすべてのリクエストがdbms_jobに送信されるまで、コントロールが画面に戻らないことです(これには完了するまでに数時間かかります)画面がグレーアウトし、手順が完了するまで砂時計だけが表示されますproc_submit_request. proc_submit_appears は、「XXXX リクエストが送信されました」というメッセージを画面に返します。
私の要件は、ユーザーが [SUBMIT] ボタンをクリックすると、画面が灰色にならないようにすることです。ユーザーは、呼び出されたプロシージャが完了するまで送信画面を表示するだけでなく、他の画面に移動できる必要があります。
パイプ内のメッセージをリッスンし、バックグラウンド プロセスとしてリクエストを実行できるリスナー (シェル スクリプトや perl など) を実行することを提案しました。しかし、ユーザーは、リスナーを実行するのではなく、アプリケーションで問題を修正するように私に求めています。
OPEN_FORM 組み込みについて少し聞いたことがあります。Form-1 と Form-2 という 2 つのフォームがあるとします。Form-1 は、OPEN_FORM を使用して Form-2 を呼び出します。OPEN_FORM を使用して次のことが可能になりましたか?
open_form('Form-2',OTHER-ARGUMENTS...) を呼び出す場合、制御は Form-1 にある必要があり (つまり、別のフォームが開かれていることをユーザーが認識しないようにする必要があります)、Form-2 は proc_submit_request を呼び出す必要があります。
ユーザーは、アプリケーション内の他の画面に移動できる必要があります。ただし、proc_submit_procedure が完了するまで Form-2 は引き続き実行されている必要があります。
ユーザーが Form-1 を閉じる (終了する) とどうなりますか? Form-2 はまだ実行されますか?
私に答えを提供するか、良い解決策を提案してください。