java - 可调用语句 PostgreSQL :Invalid number of parameters error

标签 java postgresql jdbc stored-functions callable-statement

我正在尝试在 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());

我的 Stored 函数的形式是 .

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,因为您应该能够直接运行 select * from getData(5):

PreparedStatement pstmt = con.prepareStatement("select * from getData(?)")
pstmt.setInt(1,5);
ResultSet rs = pstmt.execute(); 
while (rs.next()) {
  System.out.println(rs.getString(1));
}

关于java - 可调用语句 PostgreSQL :Invalid number of parameters error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8255299/

相关文章:

java - 清除 JScrollPane 但不能然后 'attach' 表

Django ORM 误读 PostgreSQL 序列?

sql - PostgreSQL:将选择和插入与返回 ID 相结合

mysql - 重新部署后,Tomcat webapp 无法使用 MySQL 驱动程序

java - ResultSet——它是什么样的对象?

java - 获取 Teradata 数据源连接时出现异常

java - 每个线程的执行者任务分配

java - 数据库中的总 session 数与 websphere 连接池中设置的不一样

java - 我的证书是如何到达/lib/security/cacerts 的?

python - 从 XSD 生成 Python 类和 SQLAlchemy 代码以将 XML 存储在 Postgres 上