Oracle 存儲過程 批量插入測試數據


有時候需要做DB的效率測試時,需要模擬大量數據。可以根據一條原始數據,通過執行存儲過程拷貝出大量數據:

CREATE OR REPLACE PROCEDURE proc_msw_strsql
IS
  i INT;
BEGIN
  i      :=1;
  WHILE i<=100000
  LOOP
    INSERT
    INTO REP_DATAF_07_0
      (SELECT REP_DATAF_07_ITEMID_SEQ.nextval AS PKID,
          ORGAN_ID,
          REPORT_ID,
          ITEM_ID,
          REPORT_DATE,
          CREATE_DATE,
          ITEMVALUE1,
          ITEMVALUE2,
          ITEMVALUE3,
          ITEMVALUE4,
          ITEMVALUE5,
          ITEMVALUE6,
          ITEMVALUE7,
          ITEMVALUE8,
          ITEMVALUE9,
          ITEMVALUE10,
          ITEMVALUE11,
          ITEMVALUE12,
          ITEMVALUE13,
          ITEMVALUE14,
          ITEMVALUE15,
          ITEMVALUE16,
          ITEMVALUE17,
          ITEMVALUE18,
          ITEMVALUE19,
          ITEMVALUE20,
          ITEMVALUE21,
          ITEMVALUE22,
          ITEMVALUE23,
          ITEMVALUE24,
          ITEMVALUE25,
          ITEMVALUE26,
          ITEMVALUE27,
          ITEMVALUE28,
          ITEMVALUE29,
          ITEMVALUE30,
          ITEMVALUE31,
          ITEMVALUE32,
          ITEMVALUE33,
          ITEMVALUE34,
          ITEMVALUE35,
          ITEMVALUE36,
          ITEMVALUE37,
          ITEMVALUE38,
          ITEMVALUE39,
          ITEMVALUE40,
          ITEMVALUE41,
          ITEMVALUE42,
          ITEMVALUE43,
          ITEMVALUE44,
          ITEMVALUE45,
          ITEMVALUE46,
          ITEMVALUE47,
          ITEMVALUE48,
          ITEMVALUE49,
          ITEMVALUE50,
          ITEMVALUE51,
          ITEMVALUE52,
          ITEMVALUE53,
          ITEMVALUE54,
          ITEMVALUE55,
          ITEMVALUE56,
          ITEMVALUE57,
          ITEMVALUE58,
          ITEMVALUE59,
          ITEMVALUE60,
          ITEMVALUE61,
          ITEMVALUE62,
          ITEMVALUE63,
          ITEMVALUE64,
          ITEMVALUE65,
          ITEMVALUE66,
          ITEMVALUE67,
          ITEMVALUE68,
          ITEMVALUE69,
          ITEMVALUE70,
          ITEMVALUE71,
          ITEMVALUE72,
          ITEMVALUE73,
          ITEMVALUE74,
          ITEMVALUE75,
          ITEMVALUE76,
          ITEMVALUE77,
          ITEMVALUE78,
          ITEMVALUE79,
          ITEMVALUE80,
          ITEMVALUE81,
          ITEMVALUE82,
          ITEMVALUE83,
          ITEMVALUE84,
          ITEMVALUE85,
          ITEMVALUE86,
          ITEMVALUE87,
          ITEMVALUE88,
          ITEMVALUE89,
          ITEMVALUE90,
          ITEMVALUE91,
          ITEMVALUE92,
          ITEMVALUE93,
          ITEMVALUE94,
          ITEMVALUE95,
          ITEMVALUE96,
          ITEMVALUE97,
          ITEMVALUE98,
          ITEMVALUE99,
          ITEMVALUE100,
          ITEMVALUE101,
          ITEMVALUE102,
          ITEMVALUE103,
          ITEMVALUE104,
          ITEMVALUE105,
          ITEMVALUE106,
          ITEMVALUE107,
          ITEMVALUE108,
          ITEMVALUE109,
          ITEMVALUE110,
          ITEMVALUE111,
          ITEMVALUE112,
          ITEMVALUE113,
          ITEMVALUE114,
          ITEMVALUE115,
          ITEMVALUE116,
          ITEMVALUE117,
          ITEMVALUE118,
          ITEMVALUE119,
          ITEMVALUE120,
          ITEMVALUE121,
          ITEMVALUE122,
          ITEMVALUE123,
          ITEMVALUE124,
          ITEMVALUE125,
          ITEMVALUE126,
          ITEMVALUE127,
          ITEMVALUE128,
          ITEMVALUE129,
          ITEMVALUE130,
          ITEMVALUE131,
          ITEMVALUE132,
          ITEMVALUE133,
          ITEMVALUE134,
          ITEMVALUE135,
          ITEMVALUE136,
          ITEMVALUE137,
          ITEMVALUE138,
          ITEMVALUE139,
          ITEMVALUE140
        FROM REP_DATAF_07_0
        WHERE PKID='332'
      );
    i :=i +1;
  END LOOP;
  COMMIT;
END;
View Code

然而上段代碼的執行速度並不快,因為犯了一個忌諱,查詢和插入的表為同一張表,如果從另一張臨時表查詢,插入

想要插入的表中,執行速度會很快。

 

寫好存儲過程之后,編譯一下。然后執行調用存儲過程的代碼:

begin 
proc_msw_strsql;
end;
View Code

也可以DEBUG存儲過程。

找到過程,右鍵點擊調試,出現以下錯誤:

ORA-01031: insufficient privileges
ORA-06512: at "SYS.DBMS_DEBUG_JDWP", line 68
ORA-06512: at line 1
This session requires DEBUG CONNECT SESSION and DEBUG ANY PROCEDURE user privileges.

說明沒有DEBUG權限,替換用戶並執行:

GRANT debug any procedure, debug connect session TO USERXXX; 


免責聲明!

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



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