如何定义java定义的存储过程以返回多个结果集?

如何定义java定义的存储过程以返回多个结果集?,java,kotlin,hsqldb,Java,Kotlin,Hsqldb,我试图定义一个java(用Kotlin编写)方法,当作为存储过程调用时,该方法返回多个结果集。代码如下。Hsqldb网站;s的功能页面表明这应该是可能的,我缺少什么?我当前在索引1上得到一个数组越界错误: val createProcedure = """ CREATE PROCEDURE GET_CACHED(dir VARCHAR(100), hashCode INT) MODIFIES SQL DATA LANGUAGE JAVA DYN

我试图定义一个java(用Kotlin编写)方法,当作为存储过程调用时,该方法返回多个结果集。代码如下。Hsqldb网站;s的功能页面表明这应该是可能的,我缺少什么?我当前在索引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])
    }
}
val createProcedure=”“”
创建过程GET_CACHED(dir VARCHAR(100),hashCode INT)
修改SQL数据
JAVA语言
动态结果集9
外部名称'CLASSPATH:integration.FileCache.getResultSets'
"""
@JvmStatic
@抛出(SQLException::类)
public-fun-getresultset(conn:Connection,dir:String,hashCode:Int,result:Array){
val file=getFile(dir,hashCode,“sql”)
//缓存sql语句的列表
val sqlList=BufferedReader(InputStreamReader(file.inputStream())).readLines()
val stmt=conn.createStatement()
对于(sqlList.index中的i){
结果[i]=stmt.executeQuery(sqlList[i])
}
}
考虑到我可以设置断点并到达函数内部,我认为我不需要再添加任何代码,但如果这是错误的,请告诉我


我正在寻找一个内存中的数据库,该数据库可以处理多个测试结果集(我们正在使应用程序现代化,首先设置测试,目前无法实现容器化测试)。我尝试过H2、sqlite,现在又尝试过hsqldb,如果有更好的解决方案,我愿意接受。

hsqldb支持多结果测试,但指南中指出:请注意对SQL/PSM的引用,而不是SQL/JRT。目前没有Java机制从Java语言过程返回多个结果集

出于测试目的,您可以使用由SQL编写的SQL/PSM
CREATE PROCEDURE
语句组成的文本模板,其中包含要执行的实际SQL语句的占位符。使用文件中的测试SQL语句处理模板,并执行生成的CREATE PROCEDURE语句