With JDBC, you can call your function either with PreparedStatement or with 
CallableStatement:

try (Connection c = DriverManager.getConnection("jdbc:h2:mem:1")) {

Statement s = c.createStatement();

s.execute("CREATE ALIAS my_stored_proc AS 'BigDecimal send() { return 
BigDecimal.ONE; }'");

// With PreparedStatement

PreparedStatement ps = c.prepareStatement("CALL my_stored_proc()");

ResultSet rs = ps.executeQuery();

rs.next();

System.out.println(rs.getBigDecimal(1));

// With CallableStatement

CallableStatement cs = c.prepareCall("{? = CALL my_stored_proc()}");

cs.registerOutParameter(1, Types.NUMERIC);

cs.execute();

System.out.println(cs.getBigDecimal(1));

}

In case of callable statement you should register the output parameter 
only, because your function doesn't have any input parameters. It is also 
possible to use it without registration of output parameter, in that case 
result can be read from it in the same way as from prepared statement.

You use a wrapper over JDBC, it has a different API, but situation in the 
same. Your function doesn't have any input parameters, it means you 
shouldn't try to pass them here, hypothetically SimpleJdbcCall can be 
confused by that unexpected parameter. You can try to run it without 
parameters. But I never used that library, so I can't be sure.

-- 
You received this message because you are subscribed to the Google Groups "H2 
Database" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to h2-database+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/h2-database/927ea4e9-60d0-41ad-b186-95202b3bdcfan%40googlegroups.com.

Reply via email to