所以这就是我们要查看的内容,我希望能够将参数传递到我的 fetch 子句中,以便我可以使用自定义 FETCH 数量进行查询。
根据我在其他 SO 中的阅读,遗憾的是,这不能通过 DB2 数据库获得。但是,我看到的答案不是很好,所以我根据我的具体情况提出问题。
我尝试过的其他可行的选项:
- 连接我的字符串语句以创建我的自定义查询。
- 不使用 FETCH,而是使用 WHERE col_1 BETWEEN value1 AND value2
- 正如@bhamby 所评论的,您还可以通过在 WHERE 子句中使用 > 和 < 来替换 BETWEEN stmt
给你一个我正在寻找的基本示例(顺便说一句,我正在使用带有命名参数的 Spring JDBC)
private static final String SQL_FETCH_NEXT = ""
+ "SELECT * "
+ "FROM ( SELECT "
+ " (ROW_NUMBER() OVER(ORDER BY ID, AGE)) AS RUNNING_NO, ID, NAME, AGE "
+ " FROM DATABASE1.TABLE1 PERSON "
+ " ) AS TABLE_ONE "
+ "WHERE TABLE_ONE.RUNNING_NO > :rowNumber "
+ "ORDER BY TABLE_ONE.RUNNING_NO "
+ "FETCH FIRST :fetchCount ROWS ONLY ";
因此,根据我上面的查询(由于 :fetchCount 而不起作用),我如何才能获得 FETCH 数量的自定义参数(或下降替代)?
最佳答案
您几乎已经拥有所需的所有部分,因为您已经在使用 ROW_NUMBER()
。你为什么不试试这个:
SELECT *
FROM (
SELECT
ROW_NUMBER() OVER(ORDER BY ID, AGE) AS RUNNING_NO
,ID
,NAME
,AGE
FROM DATABASE1.TABLE1 PERSON
) AS TABLE_ONE
WHERE TABLE_ONE.RUNNING_NO > :rowNumber
AND TABLE_ONE.RUNNING_NO <= :rowNumber + :fetchCount
ORDER BY TABLE_ONE.RUNNING_NO
关于Java/DB2 首先获取 :n ROWS with custom parameter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21028287/