0
テーブルにいくつかの値を挿入するH2ストアドプロシージャを作成しようとしています。私のユニットテスト環境では、実際のデータベースよりもインメモリに接続したいので、これをやっています。ここに私が持っているものがあります(私はグルービーではなく、javaであることに注意してくださいが、私はそれが重要だとは思わない)。H2ストアドプロシージャ経由で挿入
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)
}
}
を次のように
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
}
そして、私の手順がある例はすべて、かなり混乱だったと私はこの権利をやっているかわかりません。ここではエラーがあります
WARNING: Failed to execute: CALL insertInto(?,?) because: Parameter "#1" is not set; SQL statement:
(?,?)のデータ値にH2のバージョンを使用している[90012から193]
"例はすべてかなり混乱していました" - > source/url? –