我花了一些时间尝试弄清楚如何构造一个DB2 SQL语句,该语句在删除记录之前首先检查该记录是否存在。
if exists(select 1 from my_table where my_table.my_field = current date) then delete from my_table where my_table.my_field = current date
TIA!
ar7v8xwq1#
既然您说这是一个DataStage作业,那么有两种方法可以处理它:1)添加一个消息处理程序,将该消息从错误转换为警告。请参阅this techdoc。2)(可能更简单)在delete语句周围添加一个简单的select语句,以捕获删除的行数。DataStage不会对此进行抱怨:
SELECT COUNT(*) AS DELETED FROM OLD TABLE ( DELETE FROM <your_table> WHERE <criteria> )
t40tm48m2#
如果我们只关心终端中的错误代码,其中删除查询不存在任何行,那么可以使用开始atomic Package 查询,如下所示
BEGIN ATOMIC DELETE FROM <TABLE> WHERE <CONDITION>'; END
执行此操作时,不会在终端中返回错误代码。
2条答案
按热度按时间ar7v8xwq1#
既然您说这是一个DataStage作业,那么有两种方法可以处理它:
1)添加一个消息处理程序,将该消息从错误转换为警告。请参阅this techdoc。
2)(可能更简单)在delete语句周围添加一个简单的select语句,以捕获删除的行数。DataStage不会对此进行抱怨:
t40tm48m2#
如果我们只关心终端中的错误代码,其中删除查询不存在任何行,那么可以使用开始atomic Package 查询,如下所示
执行此操作时,不会在终端中返回错误代码。