使用java调用Postgresql的过程

时间:2013-01-05 09:46:51

标签: java postgresql call procedure

从postgresql的文件中我发现:

con.setAutoCommit(false);

程序调用。

CallableStatement proc = con.prepareCall("{ ? = call doquery ( ? ) }");
proc.registerOutParameter(1, Types.Other);
proc.setInt(2, -1);
proc.execute();
ResultSet results = (ResultSet) proc.getObject(1);

参考here

虽然,我试图像

那样创建一个程序
CREATE OR REPLACE FUNCTION PSSQLPRC(pA IN VARCHAR,pB IN NUMERIC,PC OUT NUMERIC)
RETURNS NUMERIC
AS $$<br> begin

... ... 
end;
$$ Language PLPGSQL;

使用java调用postgresql过程,如下面的

CallableStatement proc = con.prepareCall("{ ? = call PSSQLPRC(?,?,?) }");
proc.registerOutParameter(1, Types.NUMERIC);
proc.setString(2,"abc");
proc.setInt(3,10);
proc.registerOutParameter(4, Types.NUMERIC);
proc.execute();

当CallableStatement的对象被exectue时,将发生错误。我该怎么办才能解决错误?上述陈述是否正确?

1 个答案:

答案 0 :(得分:0)

您确实需要存储过程中的2个返回值吗? 如果没有,请尝试将功能更改为:

CREATE OR REPLACE FUNCTION PSSQLPRC(pA IN VARCHAR,pB IN NUMERIC)
RETURNS NUMERIC

Java代码:

CallableStatement proc = con.prepareCall("{ ? = call PSSQLPRC(?,?) }");
proc.registerOutParameter(1, Types.NUMERIC);
proc.setString(2,"abc");
proc.setInt(3,10);
proc.execute();