DB2 AS/400版本4的SQL查询限制

Kev*_*vin 9 sql db2

我知道版本太旧了(是的,版本4!),但我别无选择.

如何仅为DB2 AS400限制我的查询例如100行?

FETCH FIRST n ROWS ONLY
Run Code Online (Sandbox Code Playgroud)

ROW_NUMBER()
Run Code Online (Sandbox Code Playgroud)

不工作.

任何想法或解决方法?

这是一个示例SQL查询(不起作用):

SELECT POLNOP FROM ZICACPTF.POLHDR FETCH FIRST 10 ROWS ONLY
Run Code Online (Sandbox Code Playgroud)

它说

[SQL0199]不期望关键字FETCH.有效令牌:FOR WITH ORDER UNION OPTIMIZE.

dan*_*era 2

没有对此操作的 dbms 支持,请检查Version 4 DB2 UDB for AS/400 SQL Reference:No Limit, Top, First, ... 保留字。

您可以尝试通过 where 子句限制行where sequence between 100 and 200。但这是一个不真实的场景。

第一个解决方法是通过光标

DECLARE ITERROWS INTEGER;
...
SET ITERROWS = 0;
DO WHILE (SUBSTR(SQLSTATE,1,2) = '00' and ITERROWS < 100
DO
    ...
    SET ITERROWS = ITERROWS + 1;
Run Code Online (Sandbox Code Playgroud)

第二个,用你的中间件语言

我希望有人发布一个聪明的解决方法,但在我看来,他们不是。