嗨我有一个本机查询:
SELECT * FROM mytable ORDER BY column_a OFFSET ? FETCH NEXT ? ROWS ONLY
翻译成
SELECT * FROM mytable ORDER BY column_a OFFSET $1 FETCH NEXT $2 ROWS ONLY
但是 Postgresql 返回错误:
org.postgresql.util.PSQLException: ERROR: syntax error at or near \"$2\"\n
如果我将查询更改为:
SELECT * FROM mytable ORDER BY column_a OFFSET ? LIMIT ?
然后没有错误。但是,LIMIT 版本不是标准 SQL,我想避免这种情况。此外,两个版本在 pgAdmin 中都运行正常,所以它似乎与 jdbc 相关?
知道为什么标准版本在 jdbc 中不起作用吗?谢谢
示例代码:
public ResultSet testQuery() {
String query = "SELECT * FROM mytable ORDER BY column_a OFFSET ? FETCH NEXT ? ROWS ONLY";
return jdbcTemplate.execute(query, (PreparedStatement ps) -> {
ps.setInt(1, 0);
ps.setInt(2, 10000);
try (ResultSet rs = ps.executeQuery()) {
return rs;
}
});
}