有時候需要做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;
然而上段代碼的執行速度並不快,因為犯了一個忌諱,查詢和插入的表為同一張表,如果從另一張臨時表查詢,插入
想要插入的表中,執行速度會很快。
寫好存儲過程之后,編譯一下。然后執行調用存儲過程的代碼:
begin proc_msw_strsql; end;
也可以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;
