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

Oracle APEX调用POST API时遇ORA-06550错误求助

解决Oracle APEX POST API调用中的ORA-06550错误

错误原因

报错信息指向第8行v_json := :BODY;,核心问题是类型不匹配:在APEX的REST API处理上下文里,:BODY默认是VARCHAR2类型,但你声明的变量v_json是CLOB类型,导致PLS-00382表达式类型错误。

解决方案

方案1:调整变量类型(适合JSON数据长度较短的场景)

将v_json的声明从CLOB改为VARCHAR2(根据Oracle版本,可设为VARCHAR2(32767)支持更长文本):

DECLARE
vCount  NUMBER;
v_dname VARCHAR2(100);
v_loc   VARCHAR2(100);
v_json VARCHAR2(32767); -- 修改为VARCHAR2类型

BEGIN
v_json := :BODY;
APEX_JSON.parse(v_json);
vCount := APEX_JSON.get_count(p_path => 'dept');

htp.prn('data count-'||vCount);

IF vCount > 0 THEN
    FOR i IN 1 .. vCount LOOP
        v_dname := apex_json.get_varchar2(p_path => 'dept[%d].dname', p0 => i);
        v_loc   := apex_json.get_varchar2(p_path => 'dept[%d].loc', p0 => i);

       INSERT INTO dept (DNAME, LOC)  
       VALUES (v_dname, v_loc);
    END LOOP;
    COMMIT;  
END IF;
END;

方案2:转换类型为CLOB(适合JSON数据较长的场景)

如果JSON内容可能超过VARCHAR2的长度限制,使用TO_CLOB()函数将:BODY转换为CLOB类型后赋值:

DECLARE
vCount  NUMBER;
v_dname VARCHAR2(100);
v_loc   VARCHAR2(100);
v_json CLOB;

BEGIN
v_json := TO_CLOB(:BODY); -- 添加TO_CLOB类型转换
APEX_JSON.parse(v_json);
vCount := APEX_JSON.get_count(p_path => 'dept');

htp.prn('data count-'||vCount);

IF vCount > 0 THEN
    FOR i IN 1 .. vCount LOOP
        v_dname := apex_json.get_varchar2(p_path => 'dept[%d].dname', p0 => i);
        v_loc   := apex_json.get_varchar2(p_path => 'dept[%d].loc', p0 => i);

       INSERT INTO dept (DNAME, LOC)  
       VALUES (v_dname, v_loc);
    END LOOP;
    COMMIT;  
END IF;
END;

方案3:用SQL JSON函数简化代码(推荐)

直接通过JSON_TABLE解析JSON并插入,避免PL/SQL循环,效率更高:

DECLARE
BEGIN
    INSERT INTO dept (DNAME, LOC)
    SELECT j.dname, j.loc
    FROM JSON_TABLE(
        TO_CLOB(:BODY),
        '$.dept[*]' COLUMNS (
            dname VARCHAR2(100) PATH '$.dname',
            loc VARCHAR2(100) PATH '$.loc'
        )
    ) j;
    COMMIT;
    htp.prn('插入成功,共' || SQL%ROWCOUNT || '条记录');
END;

内容的提问来源于stack exchange,提问作者Hasan Al Mamun

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 13:05:15