postgresql调用功能删除revursersest下一个订单不起作用
- 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 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论