gpt4 book ai didi

sql - Oracle 分页查询中的列无效?

转载 作者:行者123 更新时间:2023-12-05 07:47:33 25 4
gpt4 key购买 nike

我正在为分页编写一个 Oracle SQL 查询,它在 sql 开发人员中工作正常但是当我尝试使用 Spring JDBC 模板运行 java 应用程序时它抛出

SQLException: Invalid column type

实际查询:

SELECT * 
FROM (
SELECT a.*, rownum r__
FROM (
SELECT *
FROM Packet
ORDER BY packet_date_created DESC
) a
WHERE rownum < ((pageNumber*pageSize)+1)
)
WHERE r__ >= (((pageNumber-1)* pageSize)+1)

在 Java 中:

MapSQlParameterSource paramSource = new MapSQlParameterSource ()
paramSource.addValue("pageNumber", pageNumber.intValue())
paramSource.addValue("pageSize", pageSize.intValue())

String sqlString =
"SELECT * FROM (SELECT a.*, rownum r__ FROM ( SELECT FROM packet ORDER BY packet_date_created DESC ) a " +
"WHERE rownum < ((:pageNumber * :pageSize) + 1 )) " +
"WHERE r__ >= (((:pageNumber-1) * :pageSize) + 1)";
List<PacketDTO> packetDTOList = jdbcTemplate.query(sqlString, paramSource, new PacketMapper());

如有任何建议,我们将不胜感激。

最佳答案

我认为问题出在 rownum 伪列别名的特殊“__”字符上。为您的 rownum 返回列尝试不同的别名,或尝试包含 {escape '_'} 包含语法。我会自己更改伪列别名。

关于sql - Oracle 分页查询中的列无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39621760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com