如下所示:http://www.postgresql.org/docs/7.4/static/jdbc-callproc.html
// Turn transactions off.
con.setAutoCommit(false);
// Procedure call.
CallableStatement upperProc = con.prepareCall("{ ? = call upper( ? ) }");
upperProc.registerOutParameter(1, Types.VARCHAR);
upperProc.setString(2, "lowercase to uppercase");
upperProc.execute();
String upperCased = upperProc.getString(1);
upperProc.close();
我可以改为:
// Turn transactions off.
con.setAutoCommit(false);
// Procedure call.
CallableStatement upperProc = con.prepareCall("{call upper( ? ) }");
upperProc.setString(2, "lowercase to uppercase");
upperProc.execute();
upperProc.close();
我刚删除了?在呼叫上层之前。我的查询只是插入所以我不需要一个值。我想保留它在这个格式,因为mysql也使用这种格式,因此我可以在JAVA中重用很多代码。
答案 0 :(得分:2)
JavaDoc for CallableStatement显示没有返回值的语法:
{call <procedure-name>[(<arg1>,<arg2>, ...)]}
所以,如果PgJDBC不接受它是一个错误。
您可以省略? =
。