我有以下 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。
有什么建议么?
您缺少ONLY
FETCH 子句末尾的关键字。
WITH a AS (
SELECT * FROM sysibm.systables
)
SELECT a.* FROM a
FETCH FIRST 10 ROWS ONLY;
虽然您给出的示例可能已简化,但将 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;
最后缺少唯一的关键字。这里的例子。