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')執行存儲過程,執行過后一下子就生成了所有需要的數據


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM