Oracle EBS 存储过程生成Json报文
代码如下:
DECLARE
G_TIMES_FORMAT CONSTANT VARCHAR2(30) := 'YYYY-MM-DD HH24:MI:SS.ff3';
L_RESPONSE_INFO JSON;
L_LINE_REC JSON;
L_LINE_LIST JSON_LIST;
L_REQ_DATA JSON;
L_REQUEST_DATAS CLOB;
RESULTINFO CLOB;
CURSOR C_PROJECT IS
SELECT T.SEGMENT1 PROJECT_NO, T.NAME PROJECT_NAME
FROM PA.PA_PROJECTS_ALL T
WHERE ROWNUM = 1;
BEGIN
--responseInfo信息
L_RESPONSE_INFO := JSON();
L_RESPONSE_INFO.PUT('returnStatus', 'S');
L_RESPONSE_INFO.PUT('returnCode', 'S0001');
L_RESPONSE_INFO.PUT('returnMsg', '调用成功');
L_RESPONSE_INFO.PUT('requestTime', TO_CHAR(SYSTIMESTAMP, G_TIMES_FORMAT));
L_RESPONSE_INFO.PUT('responseTime',
TO_CHAR(SYSTIMESTAMP, G_TIMES_FORMAT));
--生成返回报文明细
--必须先赋值成json() 、json_list() 否则添加数据时会报错 ORA-30625 不允许以NULL SELF参数调度方法
L_LINE_REC := JSON(); --json列
L_LINE_LIST := JSON_LIST(); --json数组
FOR R IN C_PROJECT LOOP
--将数据添加到json列中
L_LINE_REC.PUT('PROJECT_NO', R.PROJECT_NO);
L_LINE_REC.PUT('PROJECT_NAME', R.PROJECT_NAME);
--将json列添加到json数组
L_LINE_LIST.APPEND(L_LINE_REC.TO_JSON_VALUE);
END LOOP;
L_REQ_DATA := JSON();
L_REQ_DATA.PUT('responseInfo', L_RESPONSE_INFO);
L_REQ_DATA.PUT('resultInfo', L_LINE_LIST);
L_REQUEST_DATAS := EMPTY_CLOB();
DBMS_LOB.CREATETEMPORARY(L_REQUEST_DATAS, TRUE);
--将L_REQ_DATA转为CLOB 赋值给L_REQUEST_DATAS
L_REQ_DATA.TO_CLOB(L_REQUEST_DATAS, FALSE);
--输出json内容
L_REQ_DATA.PRINT;
RESULTINFO := L_REQUEST_DATAS;
END;
Oracle EBS 存储过程生成Json报文
http://localhost:8091//archives/oracleebs%E5%AD%98%E5%82%A8%E8%BF%87%E7%A8%8B%E7%94%9F%E6%88%90json%E6%8A%A5%E6%96%87