我在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()执行它,但没有成功。
如何在不关心返回类型的情况下执行存储过程?
答案 0 :(得分:0)
没有实际的语法错误,我不能肯定地说,但试试这个:
"SELECT * FROM \"getData\"(?)"
CamelCase / PascalCase在任何SQL数据库中都是一个坏主意。要么将它折叠成一个案例,你所看到的只是AMASSOFUNREADABLELETTERS或它需要引用,你必须永远在你想要避免语法错误的时候输入“aMassofLettersAndQuotesAndShiftKeysAndMyFingersHurt”。
答案 1 :(得分:0)
由于PostgreSQL没有“真正的”程序,因此只需使用SELECT
语句执行函数:
statement.execute("select NonQueryProcedure(?)");
请注意,在PL / pgSQL函数中,您可以使用perform
语句来调用此类函数。但是这不能在PL / pgSQL块之外使用。