我试图在postgresql中编写示例存储函数,并使用JDBC提供的CallableStatement调用它们。CallableStatement PostgreSQL:无效的参数数量错误
下面是一些我的测试代码
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 .
任何想法为什么会发生这种情况?
嘿,谢谢你的回复,我已经做好了准备工作。只是想知道如何使用CallableStatement .. – KodeSeeker
我不认为这是可能的。使用CallableStatement,您需要一个OUT参数(例如REF CURSOR)以处理结果。但是你创建你的函数的方式并没有定义一个refcursor。我认为使用SELECT是唯一的选择。 –