SQL 在 BEGIN 和 END 内更新
SQL UPDATE within BEGIN and END
我需要更新 big table (ACCOUNTS) 并根据自身更改列。
如何做到这一点?
这个查询:
begin
UPDATE ACCOUNTS SET ACC = '1' where ACC IN ('3');
UPDATE ACCOUNTS SET ACC = '2' where ACC IN ('4');
end
只更新 4 到 2。
对于较大的表,最好只执行 一次更新。
您可以按如下方式将两个更新合并为一个:
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
。
我需要更新 big table (ACCOUNTS) 并根据自身更改列。
如何做到这一点?
这个查询:
begin
UPDATE ACCOUNTS SET ACC = '1' where ACC IN ('3');
UPDATE ACCOUNTS SET ACC = '2' where ACC IN ('4');
end
只更新 4 到 2。
对于较大的表,最好只执行 一次更新。
您可以按如下方式将两个更新合并为一个:
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
。