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
作者
Administrator
发布于
2021年10月29日
许可协议