如何在JDBC中执行非查询存储过程

时间:2013-01-11 15:35:25

标签: java postgresql jdbc

我在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()执行它,但没有成功。

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

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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

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

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