在作性能測試等場景時須要生成大量的仿真數據,使用存儲過程能夠快速解決此問題。sql
個人數據庫版本爲Oracle11g,PL/SQL版本爲7.0.1.1066,操做系統版本爲Win7旗艦版。數據庫
首先有一個表player_info結構以下:瀏覽器
-- 建立表 PLAYER_INFO CREATE TABLE PLAYER_INFO ( player_id number(12, 0) PRIMARY KEY, player_name varchar2(20) NOT NULL, oper_mark number(12, 0), input_date number(10,0) DEFAULT to_number(to_char(sysdate,'yyyymmdd')), input_time number(10,0) DEFAULT to_number(to_char(sysdate,'hh24miss')), ); -- 建立序列 SEQ_PLAYER_INFO CREATE SEQUENCE SEQ_PLAYER_INFO INCREMENT BY 1 START WITH 1 MAXVALUE 999999999999999999999999999 CYCLE CACHE 20 ;
這個表一共有5列:player_id(玩家標識)、player_name(玩家名稱)、oper_mark(操做分數)、input_date(插入日期)、input_time(插入時間)。dom
在插入測試數據的時候,數據的來源可能有如下四種:性能
一、使用SEQUENSE或從其餘PROCUDURE或FUNCTION中獲取的值插入(如player_id)測試
二、使用測試人員制定的值插入(如player_name)操作系統
三、使用隨機數生成器生成並插入(如出)調試
四、使用默認值(如input_date和input_time)code
咱們在製造測試數據的時候,應支持對這四類數據的生成。下面的存儲過程gen_player_info_for_test解決了這一問題:input
CREATE OR REPLACE PROCEDURE gen_player_info_for_test( p_player_name VARCHAR2, -- 玩家名稱 p_gen_count NUMBER, -- 生成條目數 p_error_no OUT NUMBER, -- 錯誤號 p_error_info OUT VARCHAR2, -- 錯誤提示 p_error_id OUT NUMBER, -- 錯誤序號 p_error_sysinfo OUT VARCHAR2 -- 系統錯誤信息 ) AS p_curr_value NUMBER := 0; p_end_value NUMBER := 0; BEGIN dbms_output.put_line('----------- PROCUDURE START -----------'); p_curr_value := 0; p_end_value := p_gen_count; WHILE p_curr_value < p_end_value LOOP p_curr_value := p_curr_value + 1; INSERT INTO player_info (player_id, player_name, oper_mark) VALUES (seq_player_info.nextval, p_player_name, 60 + abs(mod(dbms_random.random, 40))); END LOOP; dbms_output.put_line('----------- PROCUDURE END -----------'); p_error_no := 0; p_error_info := 'EXECUTE SUCCESS'; p_error_id := SQLCODE; p_error_sysinfo := SQLERRM; EXCEPTION WHEN OTHERS THEN p_error_no := 999; p_error_info := '存儲過程執行錯誤'; p_error_id := SQLCODE; p_error_sysinfo := SQLERRM; END gen_player_info_for_test; /
第一類數據player_id用Sequence的NextVal加入,第二類數據player_name經過參數傳入存儲過程並插入,第三類數據player_name經過dbms_random.random生成並加工後插入,第四類數據input_date和input_time不用處理,直接使用DEFAULT值便可。
使用此存儲過程時,只須要先在命令窗口中執行此存儲過程,執行後就能夠在PL/SQL內瀏覽器中的Procedures目錄下找到這個存儲過程了,用鼠標右鍵單擊新加入的存儲過程(gen_player_info_for_test)並進入「測試」(Test)窗口,設定輸入的變量,點擊「開始調試器(F9)」便可執行此存儲過程。
注意執行完畢後不要忘記按「提交」按鈕。
END