任何人都可以提供一个简单的Oracle存储过程示例,用于一次更新两个表。
答案 0 :(得分:6)
CREATE OR REPLACE PROCEDURE update_2_tables
IS
begin
update t1 set c1 = 1;
update t2 set c1 = 2;
end;
/
答案 1 :(得分:2)
我认为你用c的值更新表a和b。 这是PL / SQL
create or replace procedure update_one_scan as
cursor c is
select a.rowid r1, b.rowid r1, c.value_to_get
from a join b on (join conditions)
join c on (join conditions)
where conditions;
begin
for r in c
loop
update a set col_to_update=r.value_to_get where rowid=r1;
update b set col_to_update=r.value_to_get where rowid=r2;
end loop;
end;
您可以对源表进行单次扫描。
<强>更新强> 您甚至可以在oracle SQL中执行此操作,但限制性更强(您在尝试时会看到)。但这可能会更快。
是UPDATE SELECT语句:
Create or replace Procedure update_select AS
BEGIN
update
(select a.col_to_update as c1, b.col_to_update as c2, c.value_to_get v1
from a join b on (join conditions)
join c on (join conditions)
where conditions)
set
c1 = v1, c2 = v2;
END;