postgresqlでサンプルの保存された関数を記述し、JDBCが提供するCallableStatementを使用してそれらを呼び出そうとしています。
これが私のテストコードです
Consumer bean =new Consumer();
CallableStatement pstmt = null;
try {
con.setAutoCommit(false);
String query = "{ ? = call getData( ? ) }";
pstmt = con.prepareCall(query);
pstmt.registerOutParameter(1, Types.OTHER);
pstmt.setInt(2,5);
pstmt.execute(); // execute update statement
bean=(Consumer)pstmt.getObject(1);
System.out.println("bean"+bean.getConsumer_name());
そして、私のストアド関数はの形式です。
CREATE FUNCTION getData(int) RETURNS SETOF db_consumer AS $$
SELECT * FROM db_consumer WHERE consumer_id = $1;
$$ LANGUAGE SQL;
ただし、コードを実行しようとすると、次のエラーが発生します。
org.postgresql.util.PSQLException: A CallableStatement was executed with an invalid number of parameters .
なぜこれが起こっているのか考えていますか?