Oracle測試腳本分為:變量聲明和腳本兩部分。
下面以做過的實例舉例說明:(向表A:t_white_list 中批量插入數據,且表A中字段BUSINESS_ID值取另一個表B:t_comm_member中的member_id字段;表A中字段WHITE_LIST_ID為uuid隨機唯一值)
###編寫思路:
1.首先定義變量,在Declare下定義(表A,字段如下:)
????(1)WHITE_LIST_ID:uuid,變量;? ? ? ?>>uuid varchar2(40);
????(2)BUSINESS_ID:表t_comm_member中的member_id字段,變量;? ?>>由于該字段值從表B中批量取值,為數組類型,我們首先要先定義一個數組類型,再聲明變量
? ? ? ? >>?/*自定義數組類型,‘varchar(40)’是數組內元素的類型,‘index by binary_integer’表示數組內索引 */
? ? ? ? >> type array_type is table of varchar(40) index by binary_integer;
? ? ? ? >>?m_array array_type;? /*聲明變量 m_array?,類型為上面定義的類型*/
????(3)type:0 --表示用戶,常量? ? ?>>tp number:= 0;
????(4)hospatal:醫(yī)院id,常量? ? ? ?>>hospatal varchar2(40) := 'abcdefg123456';
????(5)create_date:創(chuàng)建時間,默認當前時間,格式:yyyy-MM-dd hh24:mm:dd,變量? ? ? >>currentdate date := sysdate;
2.變量定義完成后,開始編寫腳本
查詢表B,并將結果賦值給數組(查詢表t_comm_member中member_id的值并作為數組賦值給上述聲明的m_array變量)
>>>select member_id? bulk collect? into m_array? from t_comm_member? where username like '16111%';
3.使用for循環(huán)
for i in 1 .. m_array.count loop
? ? --select查詢get_uuid函數值并賦值給上述聲明的uuid變量
? ? select get_uuid into uuid from dual;
? ? insert into t_white_list
? ? ? (WHITE_LIST_ID, BUSINESS_ID, TYPE, HOSPITAL_ID, CREATE_TIME)
? ? values
? ? ? (uuid, m_array(i), tp, hospatal, currentdate);
? end loop;
到這里腳本完成,可批量插入數據。
上述實例中學習了:常量、變量、數組的定義方式,字符串、整數類型定義方式,從其他表中查詢數據并作為數組賦值給變量,uuid的取值,for循環(huán)等。