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

标签 sql db2

我知道版本太旧了(是版本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:没有LimitTopFirst,...保留字。

您可以尝试通过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/

相关文章:

sql - Sql事务的并发处理

sql - 查找 SQL Server 中特定列中的每一行之间的时间差

java - DB2 中的 jdbc 语句获取大小

database - 如何使用错误消息中指定的 tbspaceid tableid 在 DB2 中查找表和列

SQL where x 或 y 但不是两者

linux - 如何为 Linux shell 脚本编写 DB2 函数

mysql - 是否需要关系数据库?

sql - oracle用户在sql中定义分隔符

mysql - 查询生成器无法识别 whereIn

sql - 使用 SQL 获取库中所有文件的行数