DB2中的过程-SQL错误[42601]:[SQL0199]关键字不应来自。有效令牌:使用带WHERE的SKIP WAIT
您好,我正在尝试编写一个DB2过程,这在SQL Server中是一项简单的任务,但在DB2中似乎非常困难 脚本:DB2中的过程-SQL错误[42601]:[SQL0199]关键字不应来自。有效令牌:使用带WHERE的SKIP WAIT,db2,procedure,Db2,Procedure,您好,我正在尝试编写一个DB2过程,这在SQL Server中是一项简单的任务,但在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 WHE
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]关键字不应来自。有效令牌:使用带WHERE的SKIP WAIT
你知道我哪里出错了吗?正如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
请注意,您的信号SQLSTATE可能应该位于异常处理程序中,否则在编写时它的用途不清楚。从TT.HDR中选择LOGID,其中LOGTYPE 120和CRDATE