有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用java调用Postgresql的过程

从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的对象执行时,将发生错误。我能做些什么来解决错误?以上陈述正确吗


共 (1) 个答案

  1. # 1 楼答案

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

    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();