首页 > 解决方案 > Oracle APEX 应用程序包中匿名块的执行点

问题描述

我从 ORACLE APEX 页面中的两个不同执行点调用同一个包的两个不同过程。这个包里面有匿名块。(写在包体的最后)

执行点: On Load:在“Body”区域之前。 调用:pkg_name.proc_1

项目只读部分。 调用:pkg_name.proc_2

我已将日志记录在包中的匿名块中以检查其执行情况。我观察到它在页面渲染期间只执行一次。但是在每次我调用包(通过动态操作)的页面渲染之后,匿名块被执行。

我在 oracle apex 中读到,每次调用 DB 时,它都会从池中获得一个新的 DB 连接。

匿名块如何在包中执行 --> 在数据库会话中一次或每次调用包时?

如果在数据库会话中一次,这是否意味着与动态操作不同,整个页面呈现发生在一个数据库会话中?

请帮忙!

谢谢。

标签: oracleplsqloracle-apex

解决方案


是的。所有的渲染工作都是在页面交付到您的浏览器之前一起完成的 - 因此您的包的匿名块的单次运行。但是每个 PL/SQL 动态操作都作为单独的 AJAX 请求执行,这意味着每个操作都连接到数据库并独立断开连接。


推荐阅读