[英]Call SQL stored procedure with named parameter in Groovy
private static String XXX = "{call SP_XXX(?,?,?)}"
sql.call (XXX, [Sql.NUMERIC, Sql.NUMERIC,'SOME STRING'){
outPara1, outPara2 ->
log.info("${outPara1}, ${outPara2}")
}
我可以使用上面的代碼成功調用存儲過程。
但是,當我使用命名參數而不是“?”時 占位符。 我正進入(狀態:
WARNING: Failed to execute: {call SP_XXX(:OUTP1, :OUTP2, :INP1)}
because: Invalid column type
我更改的內容替換為“?” 用“:OUTP1”,“ OUTP2”和“:INP1”。 並在call語句中,相應地使用命名參數。 更改后的代碼:
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}")
}
您正在做的是將map
傳遞給call()
,我認為我們沒有針對它的api。 此外,SP的占位符必須為?
。
您可以堅持以前的方法,也可以嘗試使用GString,如下所示:
def inp1 = 'SOME STRING'
sql.call "{call SP_XXX(${Sql.NUMERIC}, ${Sql.NUMERIC}, $inp1)}", {
outPara1, outPara2 ->
log.info("${outPara1}, ${outPara2}")
}
我寧願使用前一種方法。 :-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.