我有一个简单的光标和一个更新查询,如下所示
declare
...
cursor test_update is
...
begin
for c1 in test_update
loop
update ...
where column_1=column_2
end loop ;
end;
现在我的问题是,如果该更新成功发生,那么我必须对特定表执行delete
操作。这是posibble吗?非常感谢您的回答
答案 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;
如果您需要在循环之后执行删除操作,那么您可以将行计数添加到变量中,以获得受影响行的运行总计,并在结束时对其进行测试。行计数仅在更新后直接有意义,并且仅反映在循环的迭代中在更新中完成的操作。