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

Oracle Apex 23.1.1:基于A页Display_Type动态设置B页列为LOV

纯PL/SQL实现方案

不用新建函数,直接在A页的保存逻辑里加PL/SQL代码修改B页页面项属性,步骤如下:

1. 在A页提交处理中加入属性更新代码

假设A页的提交按钮(或保存流程)的PL/SQL处理块里,添加以下逻辑:当用户创建的数据点Display_Type选了LOV,直接修改B页对应页面项的显示类型为LOV:

DECLARE
    l_target_item_id NUMBER;
BEGIN
    -- 替换成你A页的实际页面项名称
    IF :P_A_DISPLAY_TYPE = 'LOV' THEN
        -- 获取B页对应页面项的ID(这里假设B页页面项命名是P_B_加上数据点名称,比如数据点叫USER_ROLE,项就是P_B_USER_ROLE)
        SELECT item_id 
        INTO l_target_item_id
        FROM apex_application_page_items
        WHERE application_id = :APP_ID
          AND page_id = 2 -- 替换成B页的实际页面ID
          AND item_name = 'P_B_' || :P_A_DATA_POINT_NAME;

        -- 更新页面项为LOV类型,并配置LOV来源
        UPDATE apex_application_page_items
        SET display_as = 'LIST_OF_VALUES'
          -- 替换成你的LOV查询语句,或者用共享LOV的话设置lov_name字段
          , lov_definition = 'SELECT role_name d, role_id r FROM user_roles ORDER BY role_name'
          , lov_display_null = 'YES' -- 根据需要设置是否显示空选项
        WHERE item_id = l_target_item_id;

        COMMIT; -- 提交元数据修改
    END IF;
END;

2. 确保B页加载最新配置

修改Apex元数据后,B页下次加载时会自动应用新的页面项属性。如果用户在A页保存后直接跳转到B页,在A页的提交后分支设置跳转到B页即可,此时B页会显示更新后的LOV列。

关键注意点

  • 替换代码中page_id = 2、:P_A_DATA_POINT_NAME、:P_A_DISPLAY_TYPE为你实际的页面ID和页面项名称
  • 执行代码的用户需要有修改Apex元数据的权限(工作区管理员权限足够)
  • 如果用共享组件里的LOV,把lov_definition改成lov_name = '你的共享LOV名称'即可,不用写查询语句

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 18:32:16