如何定义java定义的存储过程以返回多个结果集?
我试图定义一个java(用Kotlin编写)方法,当作为存储过程调用时,该方法返回多个结果集。代码如下。Hsqldb网站;s的功能页面表明这应该是可能的,我缺少什么?我当前在索引1上得到一个数组越界错误:如何定义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
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语句