【发布时间】:2020-07-29 22:50:43
【问题描述】:
我正在尝试定义一个 java(用 Kotlin 编写)方法,该方法在作为存储过程调用时返回多个结果集。代码如下。 Hsqldb website;s features page表明这应该是可能的,我错过了什么?我目前在索引 1 上遇到数组越界错误:
val createProcedure = """
CREATE PROCEDURE GET_CACHED(dir VARCHAR(100), hashCode INT)
MODIFIES SQL DATA
LANGUAGE JAVA
DYNAMIC RESULT SETS 9
EXTERNAL NAME 'CLASSPATH:integration.FileCache.getResultSets'
"""
@JvmStatic
@Throws(SQLException::class)
public fun getResultSets(conn: Connection, dir: String, hashCode: Int, result: Array<ResultSet?>) {
val file = getFile(dir, hashCode, "sql")
//A list of cached sql statements
val sqlList = BufferedReader(InputStreamReader(file.inputStream())).readLines()
val stmt = conn.createStatement()
for(i in sqlList.indices) {
result[i] = stmt.executeQuery(sqlList[i])
}
}
鉴于我可以设置断点并到达函数内部,我认为我不需要再添加任何代码,但如果有错误请告诉我。
我正在寻找一个可以处理多个结果集以用于测试目的的内存数据库(我们正在对应用程序进行现代化改造,首先设置测试,容器化测试目前遥不可及)。我已经尝试过 H2、sqlite 和现在的 hsqldb,如果有更好的解决方案我愿意接受。
【问题讨论】: