oracle存储过程批量插入测试数据
前几天测试中债时,自定义资产有一级类型和二级类型,一级类型下有很多分类,每个分类下又有很多二级分类,而要做的是每种类型都要建立一个自定义资产,并做一笔交易,然后测试是否出值,于是写了一个存储过程批量插入,记录一下.
create or replace procedure prd_tru_ydbb(account VARCHAR2) is--account是传入的参数,存储过程调用时传入 firstcount NUMBER;--一级分类类型数量 secondcount NUMBER;--二级分类类型数量 code sys_dict1.dictkey%type;--查询二级资产类型code(%type表示code变量的类型和sys_dict1表的dictkey字段相同) uuid tru_info.TRUSTUUID%type;--自定义资产uuid i number:=1;--计数器 trudealseqno tru_deal.SEQNO%type; chbuuid CHB_ASSET_ATTRVALUE.PROPID%type; BEGIN SELECT COUNT(*) INTO firstcount FROM sys_dict1 WHERE dictcode='ASSETTYPE_CHBEX';--查询一级分类数量并赋值给变量firstcount DECLARE CURSOR firsttype IS SELECT * FROM sys_dict1 WHERE dictcode='ASSETTYPE_CHBEX';--新建游标firsttype,存储所有一级类型 BEGIN FOR FIRST IN firsttype LOOP--一级循环开始 if (first.dictkey='ASTTRUST') then code:='ASTTRUSTEX'; elsif(first.dictkey='OTHTRUST') then code:='OTHTRUSTEX'; elsif(first.dictkey='XDZC') then code:='XDZCEX'; else code:=first.dictkey; end if; DECLARE CURSOR secondtype IS SELECT * FROM sys_dict1 WHERE dictcode=code;--新建游标secondtype,存储所有二级类型 BEGIN FOR second IN secondtype LOOP--二级循环开始 select f_guid() into uuid from dual; --插入自定义资产基本信息 --Insert into TRU_INFO....(这里的values中就可以使用secondtype.字段名来插入不同的数据,为了区分资产编号,可以使用'ZDY0'||i来设置不同的资产编号,资产名称可以使用second.dictvalue --中债要素插入 select f_guid() into chbuuid from dual; --Insert into CHB_ASSET_ATTRVALUE...--自定义资产交易插入 select f_guid() into trudealseqno from dual; --Insert into TRU_DEAL() valuse()... i:=i+1; END LOOP; END;--二级循环结束 END LOOP; commit; END;--一级循环结束 END;
然后使用exec prd_tru_ydbb('account')执行存储过程,执行过后一下子就生成了所有需要的数据
生来奔走万山中,踏尽崎岖路自通