我在Oracle APEX PAGE中有一个动态操作,它执行PL / SQL CODE(一个创建BLOB的存储过程)
因此,当用户点击它时,javascript背后(动态操作,'运行'PL和页面'锁定'直到所有内容完成)
在完成此过程之前,如何制作不会完全锁定浏览器的内容?
谢谢
答案 0 :(得分:0)
一种直截了当的方式,如果您还没有转移到第5版,那就是使用APEX_PLSQL_JOB
package。
在数据库中,在包中的函数或过程中定义所需的功能。
然后,使用API在后台启动该功能。
例如,如果您在包upload_pending
中定义了一个过程PROJECTX_IO
,那么您可以使用以下命令启动它:
declare
p_job number
begin
p_job := apex_plsql_job.submit_process(
p_sql => 'BEGIN PROJECTX_IO.upload_pending; END;',
p_status => 'Uploading');
end;
您目前没有对p_job
中返回的职位ID做任何事情。如果您知道任何时候只运行一个后台作业,那么它的作用是将其添加到数据库中的单行表中。这只是在上面的代码片段的底部(end;
之前):
delete from t_job;
insert into t_job values ( p_job );
然后,在后台进程中,您可以访问进程的作业ID。您可以使用以下命令更改作业状态:
select job into p_job from t_job;
apex_plsql_job.update_job_status(p_job,
'Upload complete');
如何处理多个后台工作?