Can';Java中的t调用存储过程

Can';Java中的t调用存储过程,java,postgresql,stored-procedures,ref-cursor,Java,Postgresql,Stored Procedures,Ref Cursor,我在PostgreSQL中编写了一个存储过程。我尝试使用java中的这个过程,它抛出'org.postgresql.util.PSQLException:ERROR:cursor“”不存在”异常 程序: CREATE OR REPLACE FUNCTION subject_show(session_id CHARACTER VARYING,OUT result_cursor refcursor, OUT total_record INTEGER, OUT total_search_record

我在
PostgreSQL
中编写了一个
存储过程。我尝试使用java中的这个过程,它抛出'
org.postgresql.util.PSQLException:ERROR:cursor“”不存在
”异常

程序:

CREATE OR REPLACE FUNCTION subject_show(session_id CHARACTER VARYING,OUT result_cursor refcursor, OUT total_record INTEGER, OUT total_search_record INTEGER  ) AS $$
        BEGIN
            total_record:=23;
            total_search_record:=22;
            OPEN result_cursor FOR SELECT "ID","NAME"   FROM "SUBJECTS" ;
    END;
    $$ LANGUAGE plpgsql;
调用过程,在
java
中:

...

callableStatement = conn.prepareCall("{ call subject_show(?,?,?,?) }");
callableStatement.setString(1, sessionID);
callableStatement.registerOutParameter(2, Types.REF);
callableStatement.registerOutParameter(3, Types.INTEGER);
callableStatement.registerOutParameter(4, Types.INTEGER);
callableStatement.executeUpdate();
System.out.println(callableStatement.getObject(3));
System.out.println(callableStatement.getObject(4));
rs = (ResultSet) callableStatement.getObject(2);
...
我发现,, 我只能在您关闭自动提交的情况下执行此操作。光标是 仅在事务内有效,因此只要驱动程序提交 光标不再有效。因此,我收到的错误