postgresql调用功能删除revursersest下一个订单不起作用

发布于 2025-02-11 11:21:39 字数 1459 浏览 0 评论 0原文

- PostgreSQL函数 -

create function test(v_param bigin, OUT mycursor refcursor) returns refcursor
language plpgsql
DECLARE
...
BEGIN
l_stmt := "select * from (select * from mytable order by date_column DESC) as t" --order query execut
..
OPEN mycursor FOR EXECUTE l_stmt
END;

- Java代码 -

Connection conn = sqlSession.getConnection();
PreparedStatement preStmt = conn.prepareStatement("select * from (select * from mytable order by date_column DESC) as t"); //pl/sql function same query
ResultSet resultSet = preStmt.executeQuery();
while(resultSet.next()) {
   /**
      date_column| etc_column
      2022/06/25 | a
      2022/06/24 | b
      2022/06/23 | c
   **/
   System.out.println(resultSet.getObject(11)) //result row ordered
}

- Java Code(呼叫功能结果设置订购问题) -

Connection conn = sqlSession.getConnection();
conn.setAutoCommit(false);
CallableStatement call = conn.prepareCall("{ ? = call test(?) }");
call.registerOutParameter(1, Types.REF_CURSOR);
call.setLong(1, 0L);
call.execute();
ResultSet resultSet = call.getObject(1);
while(resultSet.next()) {
    /**
      date_column| etc_column
      2022/06/24 | b
      2022/06/25 | a
      2022/06/23 | c
   **/
   System.out.println(resultSet.getObject(11)) //result row not ordered
}

- 问题。--

通过执行排序查询来获得光标时无法保证订单?

--postgresql function--

create function test(v_param bigin, OUT mycursor refcursor) returns refcursor
language plpgsql
DECLARE
...
BEGIN
l_stmt := "select * from (select * from mytable order by date_column DESC) as t" --order query execut
..
OPEN mycursor FOR EXECUTE l_stmt
END;

--java code--

Connection conn = sqlSession.getConnection();
PreparedStatement preStmt = conn.prepareStatement("select * from (select * from mytable order by date_column DESC) as t"); //pl/sql function same query
ResultSet resultSet = preStmt.executeQuery();
while(resultSet.next()) {
   /**
      date_column| etc_column
      2022/06/25 | a
      2022/06/24 | b
      2022/06/23 | c
   **/
   System.out.println(resultSet.getObject(11)) //result row ordered
}

--java code (call function result set ordering problem)--

Connection conn = sqlSession.getConnection();
conn.setAutoCommit(false);
CallableStatement call = conn.prepareCall("{ ? = call test(?) }");
call.registerOutParameter(1, Types.REF_CURSOR);
call.setLong(1, 0L);
call.execute();
ResultSet resultSet = call.getObject(1);
while(resultSet.next()) {
    /**
      date_column| etc_column
      2022/06/24 | b
      2022/06/25 | a
      2022/06/23 | c
   **/
   System.out.println(resultSet.getObject(11)) //result row not ordered
}

--Questions.--

Is the order not guaranteed when getting a cursor by executing a sorted query?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文