ストアド引数でinteger[]とnumeric[]があるような場合に
型が自動識別できないというエラーが発生するけどその対処方法。
def strSql = "{call hogehoge(argInt := ?, argNum := ?)}"
def params = [sql.connection.createArrayOf('int4', [1] as BigDecimal[])
, sql.connection.createArrayOf('numeric', [1] as BigDecimal)]
sql.call(strSql, params) {
}
ググッたけどこういう事例ってなくてぶっちゃけ勘で書いたものなので
もうちょっといいやり方がありそうな気がするけどとりあえずこのやり方で出来た。
原理は分かってないけどとりあえず動く。
ポイントはcreateArrayOfでPostgresqlの型を指定する事と
引数の配列をBigDecimal[]にする事。
多分後者に関してはもっといいやり方があると思うけど
単純に[1]としただけではダメだった。
値([1] as BigDecimal[])の部分はspockでwhereで用意した名称を指定する事も出来る。