0
private static String XXX = "{call SP_XXX(?,?,?,?,?,?,?)}"
sql.call (XXX, [Sql.NUMERIC, Sql.NUMERIC, 'somevalue',default,default,default,'somevalue'])

他の不要なパラメーターを設定せずに、最後の IN パラメーターを「somevalue」に設定したい。つまり、SP のデフォルト値として保持します。

Groovyでそれを行う方法はありますか?

注: デフォルトは、ここでは有効な式ではありません。そして、それらを null に設定できます。ただし、SP は実行時にデフォルト値の代わりに null を使用します。

4

1 に答える 1

0

これはグルーヴィーな質問というよりも、JDBC に関する質問だと思います。

とにかく、おそらくこれを行うことができます:

private static String XXX = "{call SP_XXX(?,?,?,default,default,default,?)"
sql.call (XXX, [Sql.NUMERIC, Sql.NUMERIC, 'somevalue', 'somevalue'])

これは非常に明白であるため、「XXX」文字列をインスタンス化するときにどのパラメーターを使用する必要があるかわからないと思います。その場合、 を呼び出す直前にプログラムで文字列を作成する必要がありますsql.call()

そのようなもの、おそらく(テストされていませんが):

// params is a HashMap with the param number as key
def callXXX = { params ->
    def str = 'call SP_XXX('
    def paramsPlaceholders = []
    1.upto(7) { i ->
        if (params[i]) {
            paramsPlaceholders << '?'
        } else {
            paramsPlaceholders << 'default'
        }
    }
    str += paramsPlaceHolders.join(',')
    str += ')'
    return sql.call(str, params.values())
}

これに基づいて、SQL メタクラスに追加できる一般的なソリューションを作成し、その後ずっと幸せに暮らすこともできます。

于 2013-08-14T17:15:17.713 に答える