Oracle APEX 动态操作页面加载处理

Oracle APEX Dynamic Action PageLoad Processing

情况: 我目前有一个页面是一种仪表板页面。它包含几个图表和报告。此页面是应用程序的主页。当页面首次加载时,第一个请求类型被传递到页面中。当页面呈现时,会执行调用 Oracle 包、设置值等的多个页面进程。一旦页面处理完成,我相信动态动作就会被触发。可能有 10 个 DA 在 PageLoad 上被触发。第一个 DA 在 PageLoad 上触发,但条件为 REQUEST = 'First'。如果满足条件,则重新提交页面,请求类型为:搜索。

问题:APEX 如何处理动态操作,特别是 PageLoad?如果有 10 个动态操作,所有序列都大于另一个,APEX 或页面处理是一次处理一个,还是同时执行,而不考虑序列和条件?

问题原因: 我创建了一个 DA 来执行插入到数据库中的语句 Table。此 DA 在没有条件的情况下在页面加载时执行,并且是 sequence#: 0。然后,我创建了另一个 DA 来执行相同的操作,但它是最后一个 sequence#。当登录到应用程序然后查看插入到数据库中的数据时 table,它显示了 4 次记录。前两个是在请求类型 = First 时插入的。然后 DA 已经提到解雇并重新提交页面,然后又插入了两条记录。我只希望数据库中有 3 条记录 Table。一个用于请求类型 First,两个用于请求类型 search。

为什么要使用动态操作?为什么不使用在页面呈现期间执行的进程?

动态动作的执行顺序无法以这种方式得到保证,同样地,JavaScript 循环的行为与您想象的完全不同。 JavaScript 做自己的事。

如果您在动态操作中执行 PL/SQL,这将同步或异步运行。无论哪种方式,它们都将使用 x 个单独的进程启动。控制顺序的唯一方法是让它们处于相同的动态动作中,并将 'wait for result' 设置为 yes。

这让我回想起:为什么要使用动态操作?