我正在尝试编写H2存储过程以将一些值插入表中。我这样做是因为在我的单元测试环境中,我宁愿连接到内存而不是真正的数据库。这就是我所拥有的(注意我在groovy中这样做,而不是java,但我认为这不重要)。
Sql sql = new Sql(JdbcConnectionPool.create("jdbc:h2:mem:test;DB_CLOSE_DELAY=-1", "user", "password"))
sql.executeUpdate("CREATE TABLE data (key VARCHAR(255) PRIMARY KEY,value VARCHAR(1023) )")
sql.execute("CREATE ALIAS insertInto FOR \"com.vanguard.fig.batch.core.StoredProcs.insertInto\"")
sql.execute("CALL insertInto(?,?)", val1, val2)
sql.eachRow("Select * From data") { row ->
println row
}
我的程序如下
public class StoredProcs {
void insertInto(java.sql.Connection con, String val1, String val2) throws Exception {
String resultValue=null;
Sql sql = new Sql(con)
sql.executeInsert("Insert Into data VALUES(?, ?)", val1, val2)
}
}
这些例子都相当令人困惑,我不确定我是否正确行事。这是错误
WARNING: Failed to execute: CALL insertInto(?,?) because: Parameter "#1" is not set; SQL statement:
插入数据值(?,?)[90012-193]
答案 0 :(得分:0)