zoukankan      html  css  js  c++  java
  • 利用存储过程批量生成数据

         又是一个快下班的时候,工作紧张有序的进行着。现场反馈了一个问题,数据大于2000条的时候,导出excel报错,导出格式是每20条数据一个sheet的格式。如图:

         如何来模拟这么多数据来进行验证呢?公司环境没有那么多数据,并且很多业务表都有关联,要是手工添加数据那是不现实的,若是利用自动化工具QTP来实现一是需要写很长的自动化脚本才能实现,并且跑脚本也需要很长时间,再者马上就要下班了,时间紧迫,容不得浪费一丁点时间,需要采取高效的方式来实现。这时就想到了后台进行插数据,利用存储过程循环来生成数据,这样就会大为节省时间。

         调用存储过程脚本如下:

    DECLARE
      OUT_RETURN_CODE VARCHAR2(1000);
      OUT_RETURN_MSG  VARCHAR2(1000);
      OUT_CODE        NUMBER;
      OUT_MSG         VARCHAR2(1000);
      I               INT;
    BEGIN
      -- Call the procedure  
      FOR I IN 1 .. 2001 LOOP
        ECMS.PKG_BILLING_SHANDONGCHARGE.P_INSERT_ELEC('334010101',
                                                      '鲁AK4701',
                                                      '10000030',
                                                      '1',
                                                      TO_DATE('2013-3-7 7:00:00',
                                                              'YYYY-MM-DD HH24:MI:SS') +
                                                      0.001 * I,
                                                      TO_DATE('2013-3-7 7:10:00',
                                                              'YYYY-MM-DD HH24:MI:SS') +
                                                      0.001 * I,
                                                      'YYY',
                                                      'YYY',
                                                      '01',
                                                      I + 1,
                                                      OUT_RETURN_CODE,
                                                      OUT_RETURN_MSG,
                                                      OUT_CODE,
                                                      OUT_MSG);  
      END LOOP;
      COMMIT;
    END;

         由于业务对时间及里程有校验,需大于上次,所以在循环的时候对这些数据进行了'+'`操作,以便满足业务要求。
         对于2000多条数据,执行这脚本几秒钟就好了,数据好了,验证现场情况就很便捷了。

    附:生成数据的校验:

    SELECT R.*, ROWNUM ROW_NO
      FROM (SELECT T.MANUAL_MEASURE_ID COLLDATAID,
                   TO_CHAR(T.ELECTRICITY, '999990.999') CHARGECAPACITY,
                   T.CUST_NO CUSTNO,
                   (SELECT O.ORG_NAME FROM O_ORG O WHERE T.SP_ORG_NO = O.ORG_NO) ENERGY_ORG_NO,
                   T.LICENSE_NO LICENSENO,
                   T.RATABLE_EVENT_ID RATABLE_EVENT_ID,
                   TO_CHAR(T.START_TIME, 'yyyy-mm-dd hh24:mi:ss') STARTTIME,
                   TO_CHAR(T.END_TIME, 'yyyy-mm-dd hh24:mi:ss') ENDTIME,
                   T.STAKE_NO STAKE_NO,
                   (SELECT O.ORG_NAME FROM O_ORG O WHERE T.ORG_NO = O.ORG_NO) CUSTORGNO,
                   T.DRIVER DRIVER,
                   T.STATION_STAFF STATION_STAFF,
                   DECODE(T.MEASURE_TYPE, '01', '充电', '02', '换电') MEASURE_TYPE,
                   T.MILEAGE_CONSUME TRAVELMILEAGE,
                   T.CHECKOUT_FLAG MEASURE_MARK,
                   DECODE(T.CHECKOUT_FLAG, '01', '未计费', '02', '已计费') CHECKOUT_FLAG
              FROM E_MANUAL_MEASURE T
             WHERE T.LICENSE_NO = '鲁AK4701'
             ORDER BY T.START_TIME DESC, T.END_TIME DESC) R
    专注于自动化、性能研究,博客为原创,转载请注明文章来源于:http://www.cnblogs.com/Automation_software/ 只求在IT界有一个清闲的世界让我静心的去专研,不求功名利禄,只为心中的那份成就感及自我成长、自我实现的快感。
  • 相关阅读:
    北风设计模式课程---22、责任链模式
    bootstarp modal自己主动调整宽度的JS代码
    谷歌技术面试要点(Google面试)(14年5月20日交大专场)
    ASCII与Unicode编码消息写文件浅析
    程序编写中的细节问题
    Oracle使用并行建索引须要注意的问题
    PHP读取Excel里的文件
    Oracle db中 CONNECT role的含义
    集团信息化之路—电子採购软件与现有库存及財务软件数据对接的探讨
    NTP方式保证以时间戳同步可靠性
  • 原文地址:https://www.cnblogs.com/Automation_software/p/2948488.html
Copyright © 2011-2022 走看看