1

我在 postgres 数据库中有一个存储过程。我正在使用postgres JDBC驱动程序执行存储过程,并且我不关心返回类型,并且无法执行查询。这表明函数名称附近有语法错误。

在返回行的过程中,我已经能够通过 PreparedStatement 并设置参数来做到这一点,例如:

PreparedStatement prepared = connection.prepareStatement("SELECT * FROM NonQueryProcedure(?)");
prepared.setInt(1, 999);
// ....
ResulSet resultSet = prepared.executeQuery();

但是,我似乎无法让它适用于我不关心返回类型的“更新”存储过程。我尝试使用 connection.prepareStatement() 和 prepareCall(),还尝试使用 statement.execute()、.executeUpdate() 和 .executeQuery() 执行它,但没有成功。

如何在不关心返回类型的情况下执行存储过程?

4

2 回答 2

0

由于 PostgreSQL 没有“真正的”过程,函数只需使用SELECT语句执行:

statement.execute("select NonQueryProcedure(?)");

请注意,在 PL/pgSQL 函数中,您可以使用perform语句来调用这样的函数。但这在 PL/pgSQL 块之外是不可用的。

于 2013-01-14T13:21:28.797 回答
0

如果没有实际的语法错误,我不能肯定地说,但试试这个:

"SELECT * FROM \"getData\"(?)"

CamelCase/PascalCase 在任何 SQL 数据库中都是一个坏主意。要么将其折叠成一个案例,而您看到的只是 AMASSOFUNREADABLELETTERS,要么它需要引用,并且您必须在任何时候都输入“aMassofLettersAndQuotesAndShiftKeysAndMyFingersHurt”以避免语法错误。

于 2013-01-11T16:50:52.507 回答