db2 - DB2 中的过程 - SQL 错误 [42601]:[SQL0199] 关键字 FROM 不是预期的。有效令牌:使用 SKIP WAIT WITH WHERE
问题描述
您好我正在尝试编写一个 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
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
可能应该在异常处理程序中,否则在您编写它时其目的不清楚。
推荐阅读
- amazon-web-services - 为什么 Fargate 默认基础设施涉及一个 VPC 和两个子网?
- node.js - MongoDB Checkboxes,是否适用?
- python - Matplotlib:如何以时间(HH24:MI)为 Y 轴绘制图形
- django - 使用 Django 和 CloudFront 的 HLS (m3u8) 视频转换流程
- javascript - 引用对象的变量 id 和使用“this”有什么区别吗?
- javascript - 函数构造函数与 eval
- python - 字符串到 Tensorflow 中的 one_hot 张量
- c++ - C++ 为什么我的递归函数在我融合循环时表现不同?
- java - Spring Annotation 缺少 requestBody
- mysql - MYSQL 错误 1054 (42S22):“where 子句”中的未知列