作者:爱在西元前2502938591 | 来源:互联网 | 2022-10-14 11:22
我正在从ORACLE APEX页面中的两个不同执行点调用同一程序包的两个不同过程。该软件包中包含匿名块。(写在包体末尾)
执行点: 加载时:在“主体”区域之前。
调用:pkg_name.proc_1 ;
项目只读部分。
调用:pkg_name.proc_2 ;
我已经在包中的匿名块中登录以检查其执行情况。我观察到它在页面渲染期间仅执行一次。但是,每当我对程序包进行调用时(通过动态操作),页面呈现后,匿名块就会被执行。
我在oracle apex中读过,每次对DB的调用都会从池中获得一个新的DB连接。
匿名块如何在程序包中执行->在数据库会话中一次执行还是在每次调用程序包时执行?
如果一次进入数据库会话,这是否意味着整个页面呈现都在一个数据库会话中发生,与动态操作不同?
请帮忙!
谢谢。
1> Tony Andrews..:
是。在将页面交付到浏览器之前,所有渲染工作都是一起完成的-因此,包的匿名块仅运行一次。但是每个PL / SQL动态操作都作为一个单独的AJAX请求执行,这意味着每个操作都连接到数据库并独立断开连接。