Sql 检查更新是否在oracle中正确进行

Sql 检查更新是否在oracle中正确进行,sql,oracle,plsql,Sql,Oracle,Plsql,我有一个简单的游标和一个更新查询,如下所示 declare ... cursor test_update is ... begin for c1 in test_update loop update ... where column_1=column_2 end loop ; end; 现在我的问题是,如果更新成功,那么我必须对特定表执行delete操作。可以吗?非常感谢您的回答假设“更新已成功发生”意味着一行或多行已更新,您可以使用以下方法进行测试: 如果需要在循环后执行delete,那么可

我有一个简单的游标和一个更新查询,如下所示

declare
...
cursor test_update is
...
begin
for c1 in test_update
loop
update ...
where column_1=column_2
end loop ;
end;

现在我的问题是,如果更新成功,那么我必须对特定表执行
delete
操作。可以吗?非常感谢您的回答

假设“更新已成功发生”意味着一行或多行已更新,您可以使用以下方法进行测试:


如果需要在循环后执行delete,那么可以将行计数添加到变量中,以获得受影响行的运行总数,并在最后进行测试。行计数只有在更新之后才有意义,并且只反映在循环的迭代中更新时所做的事情。

有可能,您可以通过触发器或在当前过程中更新后的delete语句中实现此功能。您好,Bulat我知道我可以使用表1中的
delete,其中cre\u date Hi Alex thnx很多作为答案,您觉得使用withinn for loop或after for更好吗loop@user2647888-取决于要删除的内容。如果每次删除都基于刚刚更新的记录,那么在循环内部;但是,如果您正在基于sysdate执行一次删除(如您的注释中所示),那么在最后执行一次可能更有意义。不确定你在做什么,或者为什么要使用循环…不,基本上我要删除的是一个表中所有超过7天的记录,所以你能帮我在test_update loop update中使用c1的正确语法吗。。其中columns1=column2提交;端环;如果sql%rowcount>0,则从备份表中删除,其中cre_date@user2647888-抱歉,我不明白您的要求,或者更新和删除之间的链接是什么。也许你可以在问题中添加更多的信息来解释你需要什么?(您在上一条评论和问题中的代码中缺少分号,在
第2列之后)。非常抱歉,因为我的表达技巧非常差。我要做的就是检查for循环是否已成功执行。即使它只更新了一行,我也可以,但我希望for循环正确结束。如果它已正确结束,则我希望在for循环之后使用delete语句
for c1 in test_update
loop
  update ...
  where column1=column2;

  if sql%rowcount > 0 then
    delete ... ;
  end if;
end loop;