为什么FETCH FIRST N ROWS不能与WITH语句结合使用?

时间:2011-09-27 15:34:40

标签: sql db2 fetch db2-zos

我有以下SQL语句,它不能在我的DB2数据库上运行:

WITH a AS (
    SELECT * FROM sysibm.systables
)
SELECT a.* FROM a
FETCH FIRST 10 ROWS

没有 FETCH 语句就可以了。我得到的错误信息是:

  

非法使用关键字OPTIMIZE,令牌ERR_STMT   WNG_STMT免费获取SQL SAVEPOINT HOLD   期待ASSOCIATE。

有什么建议吗?

3 个答案:

答案 0 :(得分:6)

你错过了FETCH子句末尾的ONLY关键字。

WITH a AS (
    SELECT * FROM sysibm.systables
)
SELECT a.* FROM a
FETCH FIRST 10 ROWS ONLY;

答案 1 :(得分:0)

最后遗漏了唯一的关键字。示例here

答案 2 :(得分:0)

虽然您提供的示例可能已简化,但如何将fetch first子句放在第一个选择部分中?

我永远无法清楚地阅读文档,但由于with语句创建了一个common-table-expression,因此您可能无法使用fetch-first-clause进行选择。根据{{​​3}},在with语句的select中使用fetch-first-clause是有效的语法。

WITH a AS (
SELECT * FROM sysibm.systables
FETCH FIRST 10 ROWS ONLY
)
SELECT a.* FROM a;