Jmeter 建立oracle鏈接后,需要查詢多條sql語句撰茎,且第一條sql語句的查詢結果嵌牺,要作為后續(xù)sql語句的參數(shù)。
前提條件:
1龄糊、oracle 可成功連接
2逆粹、存在表1 t_accident、表二 t_acc_policy,且 表1的accident_id 是表2的外鍵
具體操作如下:
1炫惩、下載ojdbc14.jar僻弹,并將其放至Jmeter路徑下(..\apache-jmeter-2.7\lib);否則會報錯? Cannot load JDBC driver class 'oracle.jdbc.driver.OracleDriver'
2、選中測試計劃他嚷,新增 線程組
3蹋绽、選中線程組-->配置元件,添加一個jdbc connection configuration筋蓖。
Variable Name Bound to Pool:該值在整個測試計劃中應該是唯一的卸耘,后面會使用到
DatabaseURL:jdbc:oracle:thin:@數(shù)據(jù)庫IP:1521:數(shù)據(jù)庫ID? ? ? 數(shù)據(jù)庫連接串
JDBC Driver class:oracle.jdbc.driver.OracleDriver? 數(shù)據(jù)庫驅動程序
Username:數(shù)據(jù)庫用戶名
Password:對應的數(shù)據(jù)庫用戶密碼
4、選中線程組-->sampler,添加 2個 jdbc request粘咖,第一個用于查詢accident_id蚣抗,第二個用于查詢表二t_acc_policy
注意:
1)、Variable Name:需要配置Variable Name Bound to Pool的Variable Name? 與JDBC Connection Configuration中的一致
2)瓮下、Query Type:SQL的類型翰铡。
Select Statement, Query內容為一條查詢語句時選擇此項 ;
Callable statement讽坏,多個查詢語句(不使用參數(shù)的情況下)可以放在一起順序執(zhí)行锭魔;
Prepared Select Statement,查詢SQL需傳遞參數(shù)選擇此項震缭;
Update statement赂毯,這是一個更新語句類型(包含insert和update)。如果JDBC Request中的Query內容為一條更新語句拣宰,則選擇這種類型党涕。如果該類型下寫入多條update語句,只執(zhí)行第一條
Prepared update statement,當進行增巡社、刪膛堤、改SQL語句需傳遞參數(shù)選擇此項;
3)晌该、輸入對應SQL肥荔,如果只有單條SQL绿渣,則不要添加分號(;),如果有多條燕耿,需要在不是最后一條的其他sql結尾處加分號中符。
4)、variables name:可以設置為column1,column2,column3....
column1代表第一列所有的數(shù)據(jù)誉帅,column1_#可以獲取到第一列的行數(shù)
column1_n:獲得第一列第n行的數(shù)據(jù)淀散。
column2和column3的功能類似, 假如我們只需要第一列和第三列的數(shù)據(jù)蚜锨,可以寫成column1,,column3,中間的","不可以省略档插。
因為"columnN"可以是任意字符,這里查詢的最終結果只有一列亚再,所以設置為accident_id郭膛。
5)、Result variable name:如果給這個參數(shù)設置值氛悬,它會創(chuàng)建一個對象變量则剃,保存所有返回的結果,獲取具體值的方法:columnValue = vars.getObject("resultObject").get(0).get("Column Name")
第二個jdbc request 也可以使用“圆雁?”作為占位符忍级,并傳遞參數(shù)值和參數(shù)類型帆谍。多個變量使用” 伪朽, “ 分隔。這里假如你有數(shù)據(jù)是int類型的汛蝙,也要在Parameter types 那里標示為varchar類型烈涮,否則無法運行。
5窖剑、可以看到坚洽,在第二個 jdbc request 中,select語句中出現(xiàn)了變量${accident_id}西土,那我們可以添加一個【用戶定義的變量】讶舰,名稱就是我們的sql語句里面的變量引用名accident_id。點擊測試計劃需了,新增用戶定義的變量;或者跳昼,選中線程組-->配置元件,新增用戶定義的變量
6肋乍、第二個jdbc request 中設置了Result variable name=“selectResult”鹅颊,為了看到這個對象顯示效果,可以選中該jdbc request-->后置處理器墓造,新增BeanShell PostProcessor堪伍,獲取查詢結果中锚烦,某列的值。
7帝雇、選中 線程組--->sampler,新增 Debug Sampler方便查看BeanShell PostProcessor返回結果涮俄,不用修改任何配置。
1)尸闸、Debug Sampler響應數(shù)據(jù)中accident_id_1為第一個 jdbc request 輸出的參數(shù)值,即第二個 jdbc request需要的參數(shù)值禽拔,所以在用戶定義的變量中,引用為${accident_id_1}室叉。
2)睹栖、Debug Sampler響應數(shù)據(jù)中 address 即為BeanShell PostProcessor中要 get的值。
8茧痕、選中線程組野来,添加--->監(jiān)聽器--->查看結果樹/圖形結果,便于查看測試結果