私は現地でSakila Sample Databaseを持っており、get_customer_balance関数をJavaから呼び出そうとしています。JavaストアドファンクションをJavaから呼び出すにはどうすればよいですか?
これは私が持っているコードです:
になりdouble callableStatementFunctionCallExample(final int customerId) throws SQLException {
double customerBalance = -1;
final Connection connection = DriverManager.getConnection(url, user, pass);
final CallableStatement callableStatement = connection.prepareCall("{CALL ? = get_customer_balance(?, ?)}");
callableStatement.registerOutParameter(1, customerBalance);
callableStatement.setInt(2, customerId);
final java.sql.Date date = new Date(Calendar.getInstance().getTimeInMillis());
callableStatement.setDate(3, date);
callableStatement.execute();
return customerBalance;
}
:
..callableStatement.setDouble(1, customerBalance);
と
Exception in thread "main" java.sql.SQLException: Parameter number 1 is not an OUT parameter.
だから私はこの文を置き換え..
callableStatement.registerOutParameter(1, customerBalance);
になり
:だから明らかに私はout parameter
を登録する必要がありますが、どのように
Exception in thread "main" java.sql.SQLException: Parameter p_film_count is not registered as an output parameter.
?なぜ私の最初のアプローチが間違っていますか?
まだ取得しています:スレッド "main"の例外java.sql.SQLException:パラメータ番号1はOUTパラメータではありません。 –