情况:我目前有一个页面,它是一种仪表板页面。它包含几个图表和报告。此页面是应用程序的主页。当页面第一次加载时,First 的请求类型被传递到页面中。当页面呈现多个调用 Oracle 包的页面进程时,会执行设置值等。一旦页面处理完成,我相信动态动作就会被触发。可能有 10 个 DA 在 PageLoad 上被触发。第一个 DA 是在 PageLoad 上触发的,但条件是 REQUEST = 'First'。如果满足条件,则重新提交页面,请求类型为:搜索。
问题:APEX 如何处理动态操作,特别是 PageLoad?如果有 10 个动态操作,所有序列都大于另一个,APEX 或页面处理是一次处理一个还是同时执行,而不管序列和条件如何?
问题原因:我创建了一个 DA 来在 DB 表中执行插入语句。这个 DA 在没有条件的情况下在页面加载时执行,并且是序列号:0。然后,我创建了另一个 DA 来做同样的事情,但它是最后一个序列号。当登录到应用程序然后查看插入到 DB 表中的数据时,它显示了 4 次记录。前两个是在请求类型 = First 时插入的。然后已经提到的 DA 触发并重新提交页面,然后再插入两条记录。我只希望 DB 表中有 3 条记录。一个用于请求类型 First,两个用于请求类型搜索。
为什么要使用动态操作?为什么不使用在页面呈现期间执行的进程?
不能以这种方式保证动态操作执行顺序,就像 JavaScript 循环的行为与您想象的一样。JavaScript 做它自己的事情。
如果您在动态操作中执行 PL/SQL,这将以同步或异步方式运行。无论哪种方式,它们都将通过 x 个单独的进程启动。控制顺序的唯一方法是让它们处于相同的动态操作中,并将“等待结果”设置为“是”。
这让我回到:为什么要使用动态动作?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句