4

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

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

如果没有FETCH语句,它就可以工作。我得到的错误信息是:

预期非法使用关键字 OPTIMIZE、令牌 ERR_STMT WNG_STMT GET SQL SAVEPOINT HOLD FREE ASSOCIATE。

有什么建议么?

4

3 回答 3

7

您缺少ONLYFETCH 子句末尾的关键字。

WITH a AS (
    SELECT * FROM sysibm.systables
)
SELECT a.* FROM a
FETCH FIRST 10 ROWS ONLY;
于 2011-09-27T15:38:42.617 回答
0

虽然您给出的示例可能已简化,但将 fetch first 子句放在第一个选择部分怎么样?

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

IE

WITH a AS (
SELECT * FROM sysibm.systables
FETCH FIRST 10 ROWS ONLY
)
SELECT a.* FROM a;
于 2011-09-29T09:22:05.313 回答
0

最后缺少唯一的关键字。这里的例子。

于 2011-09-27T15:45:02.823 回答