Oracle APEX动态操作锁定页面

时间:2017-02-08 15:51:00

标签: javascript multithreading oracle oracle-apex

我在Oracle APEX PAGE中有一个动态操作,它执行PL / SQL CODE(一个创建BLOB的存储过程)

因此,当用户点击它时,javascript背后(动态操作,'运行'PL和页面'锁定'直到所有内容完成)

在完成此过程之前,如何制作不会完全锁定浏览器的内容?

谢谢

1 个答案:

答案 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');

如何处理多个后台工作?