检查oracle中是否正确更新了更新

时间:2014-09-09 12:47:58

标签: 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操作。这是posibble吗?非常感谢您的回答

1 个答案:

答案 0 :(得分:2)

假设'更新已成功发生'意味着更新了一行或多行,您可以使用SQL%ROWCOUNT implicit cursor attribute进行测试:

for c1 in test_update
loop
  update ...
  where column1=column2;

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

如果您需要在循环之后执行删除操作,那么您可以将行计数添加到变量中,以获得受影响行的运行总计,并在结束时对其进行测试。行计数仅在更新后直接有意义,并且仅反映在循环的迭代中在更新中完成的操作。