簡體   English   中英

在Groovy中使用命名參數調用SQL存儲過程

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM