APEX技术问询:提交页面1页项值后,在无页项的页面2用过程展示
在Oracle APEX中通过存储过程实现页面1值传递到页面2展示的方案
步骤1:配置页面1提交按钮的参数传递
- 编辑页面1的提交按钮,设置重定向目标为页面2
- 在按钮的传递参数设置中,添加所有需要传递的页面1页项(如姓名、邮箱、电话、地址对应的页项,例如
P1_NAME、P1_EMAIL等),这些值会被自动存入APEX会话状态。
步骤2:创建读取会话值的存储过程
创建PL/SQL存储过程,通过APEX_UTIL.GET_SESSION_STATE获取页面1页项的会话值:
CREATE OR REPLACE PROCEDURE GET_PAGE1_SUBMITTED_VALUES( o_name OUT VARCHAR2, o_email OUT VARCHAR2, o_phone OUT VARCHAR2, o_address OUT VARCHAR2 ) AS BEGIN o_name := APEX_UTIL.GET_SESSION_STATE('P1_NAME'); o_email := APEX_UTIL.GET_SESSION_STATE('P1_EMAIL'); o_phone := APEX_UTIL.GET_SESSION_STATE('P1_PHONE'); o_address := APEX_UTIL.GET_SESSION_STATE('P1_ADDRESS'); END; /
注:可根据页面1实际的页项数量和名称调整存储过程的参数和获取逻辑
步骤3:在页面2创建动态内容区域展示值
在页面2添加一个PL/SQL动态内容区域,在区域的PL/SQL代码块中调用存储过程,并格式化输出内容:
DECLARE l_name VARCHAR2(100); l_email VARCHAR2(100); l_phone VARCHAR2(20); l_address VARCHAR2(200); BEGIN -- 调用存储过程获取值 GET_PAGE1_SUBMITTED_VALUES(l_name, l_email, l_phone, l_address); -- 输出格式化的展示内容 HTP.P('<div style="padding:1rem;">'); HTP.P('<h3>提交信息确认</h3>'); HTP.P('<ul style="list-style-type:none; padding-left:0;">'); HTP.P('<li><strong>姓名:</strong>' || l_name || '</li>'); HTP.P('<li><strong>邮箱:</strong>' || l_email || '</li>'); HTP.P('<li><strong>电话:</strong>' || l_phone || '</li>'); HTP.P('<li><strong>地址:</strong>' || l_address || '</li>'); HTP.P('</ul>'); HTP.P('</div>'); END; /
关键注意事项
- 确保页面1的页项在提交时被正确纳入会话:可在页面1添加提交页项处理步骤,或确认按钮的提交行为包含目标页项
- 若需要持久化存储提交的数据,可在存储过程中添加插入到业务表的逻辑
- 依赖APEX会话状态,需确保跳转后会话未过期(默认会话有效期为4小时)
内容的提问来源于stack exchange,提问作者Niki
相关产品推荐
相关产品推荐

