DB2 中的过程 - SQL 错误 [42601]:[SQL0199] 关键字 FROM 不是预期的。有效令牌:使用 SKIP WAIT WITH WHERE
Procedure in DB2 - SQL Error [42601]: [SQL0199] Keyword FROM not expected. Valid tokens: USE SKIP WAIT WITH WHERE
您好,我正在尝试编写 DB2 过程,这在 SQL 服务器中本来是一项简单的任务,但在 DB2
中似乎非常困难
脚本:
CREATE PROCEDURE TT.PURGE_LOGS ()
LANGUAGE SQL
SPECIFIC atomic_proc
ap: BEGIN ATOMIC
DELETE FROM TT.DTL
WHERE LOGID IN
(SELECT LOGID FROM TT.HDR
WHERE LOGTYPE <> 120 AND CRDATE < CURRENT_DATE - 30 DAY FROM sysibm.sysdummy1);
SIGNAL SQLSTATE '70000';
DELETE LOGID FROM TT.HDR
WHERE LOGTYPE <> 120 AND CRDATE < CURRENT_DATE - 30 DAY FROM sysibm.sysdummy1;
结束 ap
错误:
SQL 错误 [42601]:[SQL0199] 关键字 FROM 不是预期的。有效令牌:使用 SKIP WAIT WITH WHERE
我哪里出错了?
正如 mustaccio 在评论中所建议的那样,您的语法无效。
如果 CRDATE 的数据类型是 DATE 那么你的意思是:
CREATE or replace PROCEDURE TT.PURGE_LOGS ()
LANGUAGE SQL
SPECIFIC atomic_proc
ap:
BEGIN ATOMIC
DELETE FROM TT.DTL
WHERE LOGID IN
(SELECT LOGID
FROM TT.HDR
WHERE LOGTYPE <> 120
AND CRDATE < CURRENT_DATE - 30 DAYS
) ;
DELETE FROM TT.HDR
WHERE LOGTYPE <> 120
AND CRDATE < CURRENT DATE - 30 DAYS
;
END ap
请注意,您的 SIGNAL SQLSTATE
可能应该在异常处理程序中,否则在您编写时它的用途不清楚。
您好,我正在尝试编写 DB2 过程,这在 SQL 服务器中本来是一项简单的任务,但在 DB2
中似乎非常困难脚本:
CREATE PROCEDURE TT.PURGE_LOGS ()
LANGUAGE SQL
SPECIFIC atomic_proc
ap: BEGIN ATOMIC
DELETE FROM TT.DTL
WHERE LOGID IN
(SELECT LOGID FROM TT.HDR
WHERE LOGTYPE <> 120 AND CRDATE < CURRENT_DATE - 30 DAY FROM sysibm.sysdummy1);
SIGNAL SQLSTATE '70000';
DELETE LOGID FROM TT.HDR
WHERE LOGTYPE <> 120 AND CRDATE < CURRENT_DATE - 30 DAY FROM sysibm.sysdummy1;
结束 ap
错误: SQL 错误 [42601]:[SQL0199] 关键字 FROM 不是预期的。有效令牌:使用 SKIP WAIT WITH WHERE
我哪里出错了?
正如 mustaccio 在评论中所建议的那样,您的语法无效。
如果 CRDATE 的数据类型是 DATE 那么你的意思是:
CREATE or replace PROCEDURE TT.PURGE_LOGS ()
LANGUAGE SQL
SPECIFIC atomic_proc
ap:
BEGIN ATOMIC
DELETE FROM TT.DTL
WHERE LOGID IN
(SELECT LOGID
FROM TT.HDR
WHERE LOGTYPE <> 120
AND CRDATE < CURRENT_DATE - 30 DAYS
) ;
DELETE FROM TT.HDR
WHERE LOGTYPE <> 120
AND CRDATE < CURRENT DATE - 30 DAYS
;
END ap
请注意,您的 SIGNAL SQLSTATE
可能应该在异常处理程序中,否则在您编写时它的用途不清楚。