PostgreSql 12 JDBC多个结果集,只能得到第一个结果集



希望JDBC从PostgreSql 12函数中获得多个结果集。JDBC版本org.postgresql/postgresql/42.29。PostgreSql函数在这里:

create or replace function test()
returns setof refcursor as $$
declare
ret1 refcursor;
ret2 refcursor;
begin
open ret1 for
select 10 as a;
return next ret1;
open ret2 for
select 20 as b;
return next ret2;
end; $$ language plpgsql;

Java代码如下:

stmt = getConnection().prepareCall("{ ? = call test() }");
stmt.registerOutParameter(1, Types.OTHER);
stmt.execute();
rs = (ResultSet)stmt.getObject(1);
if (rs.next()) {
int a = rs.getInt("a");
if (rs.next()) {
int b = rs.getInt("b");
}
}

"a";成功检索,但第二个";rs.next((&";返回false。谷歌搜索了很多,但都没能成功。如何获得第二个结果集?

这个链接帮了我很多忙,问题得到了解决。

...
out ret1 refcursor,
out ret2 refcursor)
returns record as $$
begin
open ret1 for select 10;
open ret2 for select 20;
end; $$ language plpgsql;

Java:

stmt = getConnection().prepareCall("{call test(?,?)}");
stmt.registerOutParameter(1, Types.OTHER);
stmt.registerOutParameter(2, Types.OTHER);
stmt.execute();
ResultSet rs1 = (ResultSet)stmt.getObject(1);
ResultSet rs2 = (ResultSet)stmt.getObject(2);
int a = 0, b = 0;
if (rs1.next()) {
a = rs1.getInt(1);
}
if (rs2.next()) {
b = rs2.getInt(1);
}

相关内容

最新更新