【发布时间】:2019-09-09 16:14:21
【问题描述】:
我从 ORACLE APEX 页面中的两个不同执行点调用同一个包的两个不同过程。这个包里面有匿名块。 (写在包体的最后)
执行点:加载时:“Body”区域之前。 调用:pkg_name.proc_1;
项目只读部分。 调用:pkg_name.proc_2;
我已将日志记录到包中的匿名块中以检查其执行情况。我观察到它在页面渲染期间只执行一次。 但是在每次我调用包(通过动态操作)的页面渲染之后,匿名块被执行。
我在 oracle apex 中读到,每次调用 DB 时,它都会从池中获得一个新的 DB 连接。
匿名块如何在包中执行 --> 一次在数据库会话中或每次调用包时?
如果在数据库会话中出现一次,这是否意味着整个页面呈现发生在一个数据库会话中,这与动态操作不同?
请帮忙!
谢谢。
【问题讨论】:
-
包体中的匿名块被称为包的初始化部分。它通常在数据库会话中执行一次,即第一次调用包时。 docs.oracle.com/cd/E11882_01/appdev.112/e25519/…
-
谢谢。这很有帮助
标签: oracle plsql oracle-apex