1:Java程序中調用如下存儲過程,傳入特定json格式數據,此存儲過程根據協議將其信息解析,並寫入數據庫中。sql
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; /