Arrays groovysql与数组参数
我有一个存储过程,它接受Arrays groovysql与数组参数,arrays,stored-procedures,jdbc,groovy,connection,Arrays,Stored Procedures,Jdbc,Groovy,Connection,我有一个存储过程,它接受Array类型的参数,我想通过groovy.sql.sql.call(…)调用它,但我不知道如何实例化java.sql.Array实例作为参数传递 在普通的JDBC中,我可以通过java.sql.Connection.createArrayOf(…)创建java.sql.Array,但我无法通过groovy.sql.sql获得对连接的引用 注意,我通过传递数据源创建了Sql实例,因此groovy.Sql.Sql.getConnection()返回null。groovy.S
Array
类型的参数,我想通过groovy.sql.sql.call(…)
调用它,但我不知道如何实例化java.sql.Array
实例作为参数传递
在普通的JDBC中,我可以通过java.sql.Connection.createArrayOf(…)
创建java.sql.Array
,但我无法通过groovy.sql.sql
获得对连接的引用
注意,我通过传递数据源创建了Sql实例,因此
groovy.Sql.Sql.getConnection()
返回null。groovy.Sql.Sql类将根据需要从数据源创建连接,并在完成后将其丢弃。使用cacheConnection
保持连接,以便您使用:
def sql = new Sql(datasource)
sql.cacheConnection {
assert sql.connection != null
println sql.rows('select * from mytable where arraycol = ?',
sql.connection.createArrayOf('integer', [1, 2, 3] as Object[]))
}
谢谢@ataylor。以您的回答为指导,我发现连接被传递到闭包中,因此您不需要引用sql.getConnection()。我提出了以下我更喜欢的建议:
def sql = new Sql(datasource)
sql.cacheConnection { Connection con ->
assert con != null
def array = con.createArrayOf('integer', [1, 2, 3] as Object[]))
println sql.rows('select * from mytable where arraycol = ?', array)
}