我知道版本太旧了(是版本4!),但是我别无选择。
如何限制我的查询,例如仅对DB2 AS400限制100行?
FETCH FIRST n ROWS ONLY
和
ROW_NUMBER()
不工作。
有什么想法或解决方法吗?
这是一个示例SQL查询(不起作用):
SELECT POLNOP FROM ZICACPTF.POLHDR FETCH FIRST 10 ROWS ONLY
它说
[SQL0199] Keyword FETCH not expected. Valid tokens: FOR WITH ORDER UNION OPTIMIZE.
最佳答案
没有dbms支持此操作,请检查Version 4 DB2 UDB for AS/400 SQL Reference:没有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;
第二个,使用中间件语言。
我希望有人发布一个聪明的解决方法,但我认为事实并非如此。
关于DB2 AS/400版本4的SQL查询限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29554203/