【发布时间】:2022-08-17 18:08:00
【问题描述】:
DB2 版本:10.5.x
以下查询工作正常:db2 \"SELECT * FROM <table> FETCH FIRST 10 ROWS ONLY\"
但是当我在 db2 存储过程中使用相同的语句时,它会抛出错误db2 \"CREATE OR REPLACE PROCEDURE sampleStoredProc() BEGIN DELETE FROM <table> WHERE TIMESTAMP(\'1970-01-01 \',\'00:00:00 \') + CAST ( SUBSTR(TIMESTAMP, 1, 10) AS INTEGER ) SECONDS < (CURRENT DATE - 90 DAYS) FETCH FIRST 10 ROWS ONLY ;
来自 DB2 的错误:
DB21034E 该命令被作为 SQL 语句处理,因为它不是
有效的命令行处理器命令。在 SQL 处理期间,它返回:
SQL0104N 在 \"RENT 之后发现了意外的标记 \"FETCH 2 ROW ONLY\"
DATE - 90 DAYS)\"。预期的标记可能包括:\"<\\space>\"。LINE NUMBER=1。
SQLSTATE=42601
如果我删除 FETCH FIRST 10 ROWS ONLY 行,那么它工作正常。此外,上述存储过程在 db2 11.x 中也能正常工作。那么,DB2 10.5.x 中是否存在一些不允许我创建存储过程的错误?
-
版本之间的 SQL 语法变化! Db2-LUW v10.5 DELETE 语法不允许 fetch-clause,而 Db2-LUW v11.x DELETE 语法允许它。您将需要更改 Db2-LUW v10.5 的查询。
标签: db2