前幾天測試中債時,自定義資產有一級類型和二級類型,一級類型下有很多分類,每個分類下又有很多二級分類,而要做的是每種類型都要建立一個自定義資產,並做一筆交易,然后測試是否出值,於是寫了一個存儲過程批量插入,記錄一下.
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')執行存儲過程,執行過后一下子就生成了所有需要的數據
