2013-08-05 42 views
0
private static String XXX = "{call SP_XXX(?,?,?)}" 
sql.call (XXX, [Sql.NUMERIC, Sql.NUMERIC,'SOME STRING'){ 
    outPara1, outPara2 -> 
    log.info("${outPara1}, ${outPara2}") 
} 

我可以使用上面的代碼調用存儲過程。在Groovy中調用具有命名參數的SQL存儲過程

但是,當我使用命名參數,而不是'?'佔位符。 我得到:

WARNING: Failed to execute: {call SP_XXX(:OUTP1, :OUTP2, :INP1)} 
because: Invalid column type 

我改變了什麼被替換'?'與「:OUTP1」,「OUTP2」和「:INP1」。 並在調用語句中使用相應的命名參數。 更改後的代碼:

private static String XXX = "{call SP_XXX(:OUTP1, :OUTP2, :INP1)}" 
sql.call (XXX, [OUTP1: Sql.NUMERIC, OUTP2: Sql.NUMERIC, INP1: 'SOME STRING']){ 
    outPara1, outPara2 -> 
    log.info("${outPara1}, ${outPara2}") 
} 
+0

我的回答有用嗎? – dmahapatro

回答

1

你在做什麼是傳遞一個mapcall(),我不認爲我們有一個API。此外,SP的佔位符必須是?

要麼你可以堅持你的前一種方法,或者嘗試使用的GString如下:

def inp1 = 'SOME STRING' 
sql.call "{call SP_XXX(${Sql.NUMERIC}, ${Sql.NUMERIC}, $inp1)}", { 
    outPara1, outPara2 -> 
    log.info("${outPara1}, ${outPara2}") 
} 

我寧願前一種辦法。 :-)

相關問題