提问人:AdamTheD 提问时间:5/3/2022 最后编辑:schlebeAdamTheD 更新时间:11/17/2023 访问量:1287
如何不收到此警告?DB2 警告 SQLSTATE=02000 未找到 FETCH、UPDATE 或 DELETE 的行;或者查询结果为空表
How to not get this warning? DB2 Warning SQLSTATE=02000 No row was found for FETCH, UPDATE, or DELETE; or the result of a query is an empty table
问:
我们设置错误的方式是,当它发生时,此警告将向所有人发送一封电子邮件(我无法更改这一点)。我真的不在乎没有为这项工作找到行。
我该怎么做
A) 在绑定删除之前检查是否存在一行,或者
B) 以某种方式规避/忽略此警告?
删除示例:
delete from schema.table
where key is null;
SQLSTATE=02000 No row
显示 FETCH、UPDATE 或 DELETE 错误;或者查询结果为空表。
我也无法插入要删除的虚拟记录。
答:
0赞
nfgl
5/3/2022
#1
也许这样就可以了
with delete_rows as (
select * from old table (delete from schema.table where key is null)
)
select count(*) from delete_rows
评论
0赞
AdamTheD
5/4/2022
这就是最终为我工作的原因......可能不适合所有人,因为我们的系统有点时髦,但它接近您的答案。从 Schema.Table 中删除 where exists(select 1 from schema.table where key is null)
0赞
nfgl
5/4/2022
@AdamTheD Sure ?,如果存在 key 为 null 的行,则删除表中的每一行delete from schema.table where exists(select 1 from schema.table where key is null)
0赞
AdamTheD
5/11/2022
实际的解决方案是忽略返回代码,我将使用 0,因为 idr 实际代码,if[[$rtn_cd -ne 0]];然后 echo “delete failed” 退出 $rtn_cd fi
0赞
Mark Barinstein
5/4/2022
#2
您可以尝试使用复合 SQL(编译)语句“吃掉”此警告。
BEGIN
DECLARE CONTINUE HANDLER FOR NOT FOUND
BEGIN END;
DELETE ...;
END
评论