Groovy SQL多结果集



我正在从Groovy代码调用一个存储过程。存储过程如下所示

SELECT * FROM blahblahblah

SELECT * FROM suchAndsuch

基本上,两个SELECT表述和两个ResultSets表述。

sql.eachRow("dbo.testing 'param1'"){ rs ->
    println rs
}

这适用于单个ResultSet。我怎么能得到第二个(或任意数量的结果集)。

您需要 callWithAllRows() 或其变体。

该方法的返回类型为List<List<GroovyRowResult>>

在调用同时使用两个输出的存储过程时使用参数,并返回多个resultset。

这个问题有点老了,但是我将回答,因为我最近遇到了同样的需求,它可能对我和其他人将来的参考有用。

我正在用SphinxSearch开发一个Spring应用程序。当你在sphinx中运行查询时,你会得到结果,你需要运行第二个查询来获得记录数量的元数据等…

// the query
String query = """
    SELECT * FROM INDEX_NAME WHERE MATCH('SEARCHTERM')  
    LIMIT 0,25 OPTION MAX_MATCHES=25;
    SHOW META LIKE 'total_found';
"""
// create an instance of our groovy sql (sphinx doesn't use a username or password, jdbc url is all we need)
// connection can be created from java, don't have to use groovy for it
Sql sql = Sql.newInstance('jdbc:mysql://127.0.0.1:9306/?characterEncoding=utf8&maxAllowedPacket=512000&allowMultiQueries=true','sphinx','sphinx123','com.mysql.jdbc.Driver')
// create a prepared statement so we can execute multiple resultsets
PreparedStatement ps = sql.getConnection().prepareStatement(query)
// execute the prepared statement
ps.execute()
// get the first result set and pass to GroovyResultSetExtension
GroovyResultSetExtension rs1 = new GroovyResultSetExtension(ps.getResultSet())
rs1.eachRow {
    println it
}
// call getMoreResults on the prepared statement to activate the 2nd set of results
ps.getMoreResults()
// get the second result set and pass to GroovyResultSetExtension
GroovyResultSetExtension rs2 = new GroovyResultSetExtension(ps.getResultSet())
rs2.eachRow {
    println it
}

只是一些测试代码,这需要一些改进。您可以循环结果集并执行任何处理…

评论应该是不言自明的,希望它能帮助别人在未来!

相关内容

  • 没有找到相关文章

最新更新