2017-05-04 40 views
0

這是用於測試目的(自動測試)了SoapUI在Groovy

def status = testRunner.testCase.getPropertyValue("Status") 
def grid = testRunner.testCase.getPropertyValue("Grid")+"_V" 
def grid1 

if (["TABLE1","TABLE2"].contains(grid)) 
    grid1 ="HUBCFG."+grid 
else grid1 = "SDM."+grid 

選項1

sql.executeUpdate "UPDATE " +grid1+" t0 set XXX='$status' WHERE t0.YYY='$grid'" 

使用準備的語句1選項

String bql = "UPDATE $grid1 t0 set XXX='$status' WHERE t0.YYY='$grid'" 
sql.executeUpdate bql 
sql.commit() 
log.info("Successfully committed "+grid1+ " To " + status) 

我沒有找到明確的任何地方切的答案,所以我刮在一起。

希望這可以幫助別人

+0

這是一個問題? –

+0

不行,我自己解決了。感覺就像分享。 我想問題是,有沒有你可能看到的改進? –

+0

這種在Oracle中的編碼**不使用綁定變量**,導致這樣的語句:UPDATE tupd t0 set XXX ='xxx'WHERE t0.YYY ='1''。即該聲明將在每次執行時被嚴格分析。 –

回答

1

你應該這樣做:

sql.executeUpdate "UPDATE ${Sql.expand(grid1)} t0 set XXX=$status WHERE t0.YYY=$grid" 

或者

def bql = "UPDATE ${Sql.expand(grid1)} t0 set XXX=$status WHERE t0.YYY=$grid" 

的單引號將被添加爲你,Sql.expand使您可以嵌入之類的東西表格名稱放入合成的模板Groovy字符串

+0

這是使用Groovy SQL的首選編碼 - **不添加帶引號的字符串,但使用了綁定變量**,例如'UPDATE tupd t0 set XXX =:1 WHERE t0.YYY =:2'。不幸的是,Groovy SQL不支持prepareStatement,因此查詢將在每次執行時被* soft *解析。 –