You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 05:48:22