我是Developer2000 的新手。我有一个 Oracle pl/sql 过程(比如 proc_submit_request),它获取数千个请求并将它们提交给 dbms_job 调度程序。dbms_job 的调用是
为每个获取的请求在循环内编码。
目前,我在 oracle 表单屏幕中有一个按钮(例如,提交按钮),单击它调用 proc_submit_request。这里的问题是......在所有获取的请求都提交到 dbms_job 之前,控件不会返回到我的屏幕(这需要几个小时才能完成) 屏幕变灰,只有沙漏出现,直到程序完成proc_submit_request。proc_submit_appears 向屏幕返回一条消息,告诉“已提交 XXXX 请求”。
我现在的要求是,一旦用户单击提交按钮,屏幕不应再变灰。用户应该能够导航到其他屏幕,而不仅仅是在调用过程完成之前点击提交屏幕。
我建议运行监听器(shell 脚本和 perl 的东西),它们可以监听管道中的任何消息并将请求作为后台进程运行。但是用户要求我解决应用程序中的问题,而不是运行侦听器。
我听说过一些内置的 OPEN_FORM。假设,我有两种形式,即 Form-1 和 Form-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 会继续运行吗?
请给我答案或提出一个好的解决方案。