我有以下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。
有什么建议吗?
答案 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;