2017-05-04 6 views
0

dies ist für Testzwecke (Prüfautomaten) SoapUIhergestellt Anweisung in 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 

Option1

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

Option2

sql.commit() 
log.info("Successfully committed "+grid1+ " To " + status) 

ich habe nicht die Antworten klar überall geschnitten finden, so sie i zusammengekratzt.

Hoffnung hilft dieses jemand

+0

Ist dies eine Frage? –

+0

Nein, ich habe es selbst gelöst. fühlte sich wie teilen. Ich denke, die Frage wäre, gibt es Verbesserungen, die Sie für möglich halten? –

+0

Diese Art von Kodierung in Oracle ** verwendet keine bind variabales **, die zu einer Anweisung führen, wie zB 'UPDATE tupd t0 XXX =' xxx 'WHERE t0.YYY =' 1''. I.e. Die Anweisung wird für jede Ausführung hart geparst. –

Antwort

1

Sie tun sollten:

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

Oder

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

die einfachen Anführungszeichen wird für Sie hinzugefügt werden, und Sql.expand ermöglicht es Ihnen, die Dinge einzubetten wie Tabellennamen in die resultierende Vorlage Groovy String

+0

Dies ist bevorzugte Codierung mit Groovy SQL - ** keine in Anführungszeichen gesetzten Strings werden hinzugefügt, sondern Bind-Variablen verwendet **, wie "UPDATE tupd t0 XXX =: 1 WHERE t0.YYY =: 2". Leider unterstützt Groovy SQL prepareStatement nicht, daher wird die Abfrage bei jeder Ausführung * soft * analysiert. –