请问ORACLE12C版本中的查询一个表的全部数据,以及表的全部记录个数是2个结果集,另外要拼接几个固定格式最终返回JSON,能帮助完善一下代码吗?感激不尽!

发布于 2021-12-01 03:07:47 字数 2112 浏览 779 评论 2

@IdleMan 您好,想跟你请教个问题:

请问ORACLE12C版本中的查询一个表的全部数据,以及表的全部记录个数是2个结果集,另外要拼接几个固定格式最终返回JSON,能帮助完善一下代码吗?感激不尽!

CREATE OR REPLACE
PROCEDURE "PR_ECOS_OP_CUSTFEEDBACK_HEAD_QUERY"  (
													V_PAGE_NO   IN  VARCHAR2,--页面Number
													V_FUN_ID    IN	VARCHAR2,--页面Number,对应的功能方法ID
													V_OUT_RETURN OUT VARCHAR2--子存储过程的输出参数,传递给主存储过程,主存储过程根据这个返回值判断执行子存储过程是否成功
																			
)
 IS
V_TOTAL      VARCHAR(100);
V_OU_MSG     VARCHAR(3000);

BEGIN

	V_OUT_RETURN := '';

	IF V_PAGE_NO ='001' AND V_FUN_ID ='select' THEN
		
		SELECT   
		"Row_ID",           
		"LinkOrderNumber",   
		"CustomerID",
		"StoreName"		
	    FROM   SHINHO."ECOS_Op_CustFeedBack_Head" --这个查询结果怎么处理,是要放到临时表吗?这个结果对应下面拼接的JSON中的rows
						
	    SELECT "COUNT"(1)  FROM  SHINHO."ECOS_Op_CustFeedBack_Head" --这个查询结果如何处理?这个结果对应下面拼接的JSON中的total
		
		/*以上的2个查询结果要变为JSON字符串返回,JSON字符串格式为:
	{
		"total": 25,
		"rows": [
        {   
            "Row_ID": 1001,
            "LinkOrderNumber": 765001,
            "CustomerID":12345 ,
            "StoreName": "倩倩"
        },{   
            "Row_ID": 2054,
            "LinkOrderNumber": 881001,
            "CustomerID":22010 ,
            "StoreName": "张三"
        },{   
            "Row_ID": 9820,
            "LinkOrderNumber": 265701,
            "CustomerID":35477 ,
            "StoreName": "李四"
			}
		],
		"footer": null,--这个是固定格式
		"columns": null,--这个是固定格式
		"frozenColumns": null,--这个是固定格式
		"AttachRemark": null,--这个是固定格式
		"Attach": null--这个是固定格式
	}
		最终要拼接成这种格式返回,请问怎么如何修改这个存储过程的代码,使结果能够像列出的这个JSON的格式进行返回?
		*/
		
		--COMMIT;查询时不需要COMMIT
		V_OUT_RETURN := 'OK';

		EXCEPTION
    WHEN OTHERS THEN
    V_OUT_RETURN := 'ERROR';
    V_OU_MSG    := '失败,原因是:' || SQLERRM;
    ROLLBACK;
    INSERT INTO SYS_ERROR_LOG
      (ROW_ID, PR_NAME, ERROR_DESC, INSDT)
    VALUES
      (SYS_ERROR_LOG_SEQ.NEXTVAL, 'PR_ECOS_OP_CUSTFEEDBACK_HEAD_QUERY', V_OU_MSG, SYSDATE);
    COMMIT;
END



如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

清晨说ぺ晚安 2021-12-03 22:59:04

开发工具是Navicat Premium,库是远程的,试过不加双引号提示错误,后来就改成加双引号就不报错了,很感谢您啊!

伪装你 2021-12-03 22:22:48
CREATE OR REPLACE PROCEDURE
"PR_ECOS_OP_CUSTFEEDBACK_HEAD_QUERY"  (
                                                    V_PAGE_NO   IN  VARCHAR2,--页面Number
                                                    V_FUN_ID    IN  VARCHAR2,--页面Number,对应的功能方法ID
                                                    V_OUT_RETURN OUT VARCHAR2--子存储过程的输出参数,传递给主存储过程,主存储过程根据这个返回值判断执行子存储过程是否成功
                                                    v_out_json   out clob --生成的json                                                                  
)
 IS
  V_TOTAL      VARCHAR(100);
  V_OU_MSG     VARCHAR(3000);
  v_num        number;
BEGIN
 
    V_OUT_RETURN := '';
    IF V_PAGE_NO ='001' AND V_FUN_ID ='select' THEN
        dbms_lob.append(v_out_json, '{');
        SELECT COUNT(1) into v_num   FROM  SHINHO."ECOS_Op_CustFeedBack_Head";
        dbms_lob.append(v_out_json, '    "total":');
        dbms_lob.append(v_out_json, v_num);
        dbms_lob.append(v_out_json, ',
');
        dbms_lob.append(v_out_json, '    "rows": [
');
        for item in(SELECT  
          "Row_ID",           
          "LinkOrderNumber",   
          "CustomerID",
          "StoreName"     FROM   SHINHO."ECOS_Op_CustFeedBack_Head" ) loop --这个查询结果怎么处理,是要放到临时表吗?这个结果对应下面拼接的JSON中的rows
         dbms_lob.append(v_out_json, '    {
');   
         dbms_lob.append(v_out_json, '        "Row_ID":
');     
         dbms_lob.append(v_out_json, item."Row_ID");    
         dbms_lob.append(v_out_json, ',
');

         dbms_lob.append(v_out_json, '        "LinkOrderNumber":
');     
         dbms_lob.append(v_out_json, item."LinkOrderNumber");    
         dbms_lob.append(v_out_json, ',
'); 

         dbms_lob.append(v_out_json, '        "CustomerID":
');     
         dbms_lob.append(v_out_json, item."CustomerID");    
         dbms_lob.append(v_out_json, ',
'); 

          dbms_lob.append(v_out_json, '        "StoreName":
"');     
         dbms_lob.append(v_out_json, item."StoreName");    
         dbms_lob.append(v_out_json, '"
'); 
         dbms_lob.append(v_out_json, '    },
');    
        end loop;       
                 dbms_lob.append(v_out_json, '],
   "footer": null,--这个是固定格式
   "columns": null,--这个是固定格式
   "frozenColumns": null,--这个是固定格式
   "AttachRemark": null,--这个是固定格式
   "Attach": null
}');     
      end if;
        V_OUT_RETURN := 'OK';
    EXCEPTION
      WHEN OTHERS THEN
          V_OUT_RETURN := 'ERROR';
          V_OU_MSG    := '失败,原因是:' || SQLERRM;
          INSERT INTO SYS_ERROR_LOG
            (ROW_ID, PR_NAME, ERROR_DESC, INSDT)
          VALUES
            (SYS_ERROR_LOG_SEQ.NEXTVAL, 'PR_ECOS_OP_CUSTFEEDBACK_HEAD_QUERY', V_OU_MSG, SYSDATE);
          COMMIT;
END;

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文