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

ORA-06530错误:使用Schema级类型时引用未初始化复合类型求助

解决ORA-06530:引用未初始化复合类型错误

错误根源在于:你初始化了WS_RESPONSE_TABLE表类型变量,但每次执行v_res.extend后,表中新增的元素只是空的WS_RESPONSE对象引用,并没有实际创建对象实例。直接访问其valeur属性就会触发"引用未初始化复合类型"的ORA-06530错误。

修复方案

在v_res.extend之后,必须显式创建WS_RESPONSE对象实例并赋值给表的对应元素,之后才能对valeur属性进行赋值。

修改后的代码如下:

v_res            WS_RESPONSE_TABLE := WS_RESPONSE_TABLE();
-- 其他变量声明保持不变

for i in 0..10
loop
    v_res.extend;
    -- 关键:初始化新增的WS_RESPONSE对象实例
    v_res(v_res.last) := WS_RESPONSE(null);
    for j in 0..REGEXP_COUNT(P_KEYS, ':')
    loop
        v_key := REGEXP_SUBSTR(P_KEYS, '[^:]+', 1, j+1);
        v_data := apex_json.get_varchar2(p_path => REPLACE(v_key, '{}', '[%d]'), p_values => v_json, p0 => i);
        IF j = 0 THEN
            v_res(v_res.last).valeur := v_data;
        ELSE
            v_res(v_res.last).valeur := v_res(v_res.last).valeur || ' ' || v_data;
        END IF;
    end loop;
end loop;

补充说明

  • 表类型的extend方法仅为表分配存储位置,不会自动初始化其中的对象元素
  • 不管是提前扩展多行还是更换索引方式,只要没有实例化WS_RESPONSE对象,访问其属性都会触发相同错误
  • 初始化对象时可以传入null作为初始值,后续再通过赋值更新valeur属性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 18:38:19