文档章节

oracle 11g plsql解析json数据示例2

o
 osc_pn11u1x9
发布于 2018/08/06 10:16
字数 440
阅读 5
收藏 0

精选30+云产品,助力企业轻松上云!>>>

1:Java程序中调用以下存储过程,传入特定json格式数据,此存储过程根据协议将其信息解析,并写入数据库中。

 

 

CREATE OR REPLACE PROCEDURE wdgj_in_result_gen(p_json_varchar IN VARCHAR2,p_code out number,p_message out varchar2) AS
    ----------------------------------------------------------
    --author:xuyang
    --date:20180705
    --description:
    --将接口返回的数据插入到中间表【订单主表  WDGJ_RESULT_RETAIL】和【订单子表  WDGJ_RESULT_RETAILITEM】中:
    --(字段对照关系见接口地址以及本文档的下一个需求的表结构)
    --如果调用存储过程成功,则返回成功。
    --如果调用失败,则返回失败

    ----------------------------------------------------------
    v_injson   json;
    v_bodylist json_list; --明细信息json列表
    v_onejson  json; --用于解析每一个明细数据

    --要插入主表的记录变量
    v_id          wdgj_in_result.id%TYPE; --入库回传主表记录id
    v_searchno    wdgj_in_result.searchno%TYPE;
    v_warehouseno wdgj_in_result.warehouseno%TYPE;
    v_end_time    wdgj_in_result.end_time%TYPE;
    v_start_time  wdgj_in_result.start_time%TYPE;

    --要插入子表的记录变量
    v_item_id wdgj_in_resultitem.id%TYPE; --入库回传明细表记录id
    v_qty     wdgj_in_resultitem.qty%TYPE; --入库数量
    v_no      wdgj_in_resultitem.no%TYPE; --条码
    v_refno   wdgj_in_resultitem.refno%TYPE; --入库单号
BEGIN
    --将接口信息转化为json格式
    v_injson := json(p_json_varchar);

    --获取要插入头表的字段信息
    v_searchno := json_ext.get_string(v_injson, 'searchno');
    v_warehouseno := json_ext.get_string(v_injson, 'warehouseno');
    v_end_time := json_ext.get_string(v_injson, 'END_TIME');
    v_start_time := json_ext.get_string(v_injson, 'START_TIME');

    v_id := get_sequences(upper('wdgj_in_result'));

    --退换货单主表插入记录
    INSERT INTO wdgj_in_result
        (id, searchno, warehouseno, start_time, end_time, isactive)
    VALUES
        (v_id, v_searchno, v_warehouseno, v_start_time, v_end_time, 'Y');

    --获取明细数据,插入到发货订单明细表
    v_bodylist := json_list();
    v_onejson := json();

    --获取body:orderBody
    v_bodylist := json_ext.get_json_list(v_injson, 'goodsList');

    --循环获取明细数据,并插入数据库中
    FOR idx IN 1 .. v_bodylist.count LOOP
        --读取每个明细信息
        v_onejson := json(v_bodylist.get_elem(idx));
        v_qty := to_number(json_ext.get_string(v_onejson, 'QTY'));
        v_no := json_ext.get_string(v_onejson, 'NO');
        v_refno := json_ext.get_string(v_onejson, 'REFNO');
    
        --获取要使用的明细记录id
        v_item_id := get_sequences(upper('wdgj_in_resultitem'));
    
        --插入明细表
        INSERT INTO wdgj_in_resultitem
            (id, qty, no, refno, isactive)
        VALUES
            (v_item_id, v_qty, v_no, v_refno, 'Y');
    
    END LOOP;

    p_code := 1;
    p_message := '';
    
END;
/

  

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

四面字节跳动(高级开发岗):分布式+中间件+TCP+JVM+Hashmap+ThreadLocal

字节跳动的面试官都挺好,面试的内容是我面试那么多家以来最全面的,问题也没有特别刁钻,都比较符合工作场景。 项目很重要,项目是敲门砖也是面试的大头,如果我没有简历上的两个项目的话,...

IT-哆哆
2分钟前
0
0
直播回顾

因业务需要,接触了一下直播,作为一个小白,在此做个回顾。 需求:在我们自己的APP上直播带货 调研:阿里云视频直播、腾讯云标准直播 简单地来说,直播就是把主播端采集的视频传送给用户端。...

osc_nk8pyo7o
2分钟前
0
0
神经网络中的激活函数

作者|Renu Khandelwal 编译|VK 来源|Medium 什么是神经网络激活函数? 激活函数有助于决定我们是否需要激活神经元。如果我们需要发射一个神经元那么信号的强度是多少。 激活函数是神经元通过神...

osc_993tr4xp
4分钟前
0
0
重磅!YOLOv4阅读笔记(附思维导图和论文译文)!

今天刷看到了YOLOv4之时,有点激动和兴奋,等了很久的YOLOv4,你终究还是出现了 论文地址:https://arxiv.org/pdf/2004.10934.pdf GitHub地址:https://github.com/AlexeyAB/darknet 觉得作者...

osc_zwv9uj8l
4分钟前
0
0
2.链表

点击使用幕布网页版查看(含思维导图) 链表(单链表)是一种通过指针将一组零散的内存块串联起来的数据结构,每个链表的结点除了存储的数据之外,还需要记录链上的下一个节点的地址 链表的插...

osc_73pstnki
5分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部