我知道版本太旧了(是的,版本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.
没有对此操作的 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)
第二个,用你的中间件语言。
我希望有人发布一个聪明的解决方法,但在我看来,他们不是。