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

Oracle APEX ERR-1002错误求助:动态动作引用交互式网格列失败

解决APEX动态动作PL/SQL引用交互式网格列报错ERR-1002的问题

问题原因

交互式网格(Interactive Grid)的列不属于APEX的标准页面项(Page Item),无法直接通过:CODE这种绑定变量格式在PL/SQL动态动作中引用,这就是报错ERR-1002: Unable to find item ID for item :CODE的根本原因。

可行解决方案

1. 通过JavaScript获取列值后传递给PL/SQL

调整动态动作执行顺序:

  • 第一步:执行JavaScript代码,获取当前行的CODE列值并存入隐藏页面项(需提前创建,比如P1_HIDDEN_CODE)
    var ig = apex.region("YOUR_IG_STATIC_ID").widget().interactiveGrid("getViews", "grid");
    var selectedRow = ig.getSelectedRecords()[0];
    if (selectedRow) {
        apex.item("P1_HIDDEN_CODE").setValue(selectedRow[0].CODE);
    }
    
    注意替换YOUR_IG_STATIC_ID为你的交互式网格实际静态ID,隐藏项数据类型要和CODE列匹配。
  • 第二步:执行PL/SQL代码,通过:P1_HIDDEN_CODE引用目标值
    -- 示例逻辑:输出获取到的CODE值
    DBMS_OUTPUT.PUT_LINE('CODE值:' || :P1_HIDDEN_CODE);
    

2. 在PL/SQL中通过数据表查询值

如果交互式网格基于数据表,可结合会话变量和主键列查询目标值(需提前用隐藏项存储当前选中行的主键,比如P1_SELECTED_ID):

DECLARE
    l_code VARCHAR2(100);
BEGIN
    SELECT CODE INTO l_code
    FROM YOUR_TABLE_NAME
    WHERE PRIMARY_KEY_COLUMN = :P1_SELECTED_ID;
    -- 后续业务逻辑处理
END;

3. 利用网格行选择触发的内置变量

若动态动作由网格行选择触发,可直接在PL/SQL中使用APEX$ROW变量访问当前行的列值:

DECLARE
    l_code VARCHAR2(100);
BEGIN
    l_code := APEX$ROW.CODE;
    -- 业务逻辑处理
END;

额外注意事项

  • 确认交互式网格的静态ID配置正确,否则JavaScript无法定位网格实例
  • 测试时开启APEX调试模式,查看动态动作各步骤的执行日志,排查值传递是否异常

内容的提问来源于stack exchange,提问作者Adrián

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 13:51:14