利用存储过程批量生成数据
又是一个快下班的时候,工作紧张有序的进行着。现场反馈了一个问题,数据大于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界有一个清闲的世界让我静心的去专研,不求功名利禄,只为心中的那份成就感及自我成长、自我实现的快感。
posted on 2013-03-07 17:27 dfine.sqa 阅读(2551) 评论(2) 编辑 收藏 举报