BEGIN和END中的SQL UPDATE

时间:2018-12-18 13:50:36

标签: sql oracle plsql sql-update toad

我需要更新大表(ACCOUNTS)并根据自身更改列。

这是怎么做的?

此查询:

begin
UPDATE ACCOUNTS SET ACC = '1' where ACC IN ('3');
UPDATE ACCOUNTS SET ACC = '2' where ACC IN ('4');
end

仅更新4到2。

1 个答案:

答案 0 :(得分:4)

对于较大的表,最好只执行一次更新

您可以将以下两个更新合并为一个:

select * from ACCOUNTS;

A
-
1
2
3
4


BEGIN
  update ACCOUNTS
  set ACC = case when ACC = '3' then '1'
                 when ACC = '4' then '2' end
  where ACC in ('3','4'); 
  dbms_output.put_line('rows updated '  || SQL%ROWCOUNT);
END;
/

rows updated 2

select * from ACCOUNTS;

A
-
1
2
1
2

别忘了COMMIT