后台对象集合转换为json数据作为存储过程的入参,处理方式如下:
create or replace procedure SP_KHZBDFB_UPDATE(p_json IN VARCHAR2, --传入的json串
p_code OUT NUMBER, --结果代码
p_message OUT VARCHAR2) is --结果信息
v_bodylist json_list := json_list(); --明细信息json列表
v_onejson json; --用于解析每一个明细数据
begin
BEGIN
v_bodylist := json_list(p_json);
EXCEPTION
WHEN OTHERS THEN
p_code := -101;
p_message := 'JSON格式错误:' || p_json;
RETURN;
END;
FOR i IN 1 .. v_bodylist.count LOOP
v_onejson := json(v_bodylist.get(i));
BEGIN
update T_KHZBDFB
set DF = json_ext.get_string(v_onejson, 'DF'),
BZ = json_ext.get_string(v_onejson, 'BZ'),
ZDKPR = json_ext.get_string(v_onejson, 'ZDKPR'),
ZT = json_ext.get_number(v_onejson, 'ZT')
where id = json_ext.get_string(v_onejson, 'ID');
EXCEPTION
WHEN OTHERS THEN
p_code := -1;
p_message := '保存失败!' || SQLERRM;
ROLLBACK;
RETURN;
END;
END LOOP;
COMMIT;
p_code := 1;
p_message := '保存成功!';
RETURN;
end SP_KHZBDFB_UPDATE;