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

Apex 21.2中如何在PL/SQL读取CheckboxGroup选中值

解决Apex 21.2中Checkbox Group值无法在PL/SQL动态动作中读取的问题

核心原因

动态动作执行服务器端PL/SQL代码时,默认不会自动将未提交的页面项值同步到会话状态,导致PL/SQL无法获取用户勾选的最新值。

具体解决步骤

  1. 配置动态动作的提交项
    打开你的动态动作,找到「Execute Server-side Code」的属性设置,在**「Page Items to Submit」**输入框中添加P302_MINISTRY_GROUP和P302_PRIM_KEY。这一步会强制将这两个页面项的当前值提交到服务器会话,PL/SQL就能读取到最新的勾选值。

  2. 验证分隔符匹配
    Apex的Checkbox Group默认使用冒号(:)作为选中值的分隔符,你代码中使用apex_string.split(:P302_MINISTRY_GROUP, ':')是正确的,无需修改。如果曾手动修改过分隔符,需确保split的参数和字段设置一致。

  3. 调试确认值传递
    可以在PL/SQL代码开头添加调试语句,确认值是否正常传递:

    apex_debug.message('P302_MINISTRY_GROUP: %s', :P302_MINISTRY_GROUP);
    

    开启Apex调试模式后,查看调试日志,就能直观看到字段值是否被正确提交。

  4. 排除其他干扰设置

    • 确认P302_MINISTRY_GROUP字段未设置**「Server-side Condition」**导致其被隐藏或不渲染;
    • 检查字段的**「Read Only」**属性是否被意外开启,这会阻止用户修改值并提交。

修正后的PL/SQL代码示例(可选)

如果需要处理勾选值的增删逻辑,可完善代码如下(确保提交项配置正确后):

declare
  l_dummy number;
  l_volunteer_pk number;
begin
  l_volunteer_pk := :P302_PRIM_KEY;
  
  -- 先删除未勾选的记录(可选,根据需求调整)
  delete from vol_contact_ministry
   where contact_fkey = l_volunteer_pk
     and ministry_fkey not in (select column_value from table(apex_string.split(:P302_MINISTRY_GROUP, ':')));
  
  -- 插入新增的勾选记录
  for cur_r in (select column_value from table(apex_string.split(:P302_MINISTRY_GROUP, ':'))) 
  loop
    begin
      select prim_key
        into l_dummy
        from vol_contact_ministry 
       where ministry_fkey = cur_r.column_value
         and contact_fkey = l_volunteer_pk;
    exception
      when no_data_found then
        insert into vol_contact_ministry (ministry_fkey, contact_fkey, status) 
        values (cur_r.column_value, l_volunteer_pk, 'Active');
    end;
  end loop;
end;

内容的提问来源于stack exchange,提问作者user3138025

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 18:45:21