简单的oracle存储过程示例,用于一次更新两个表

时间:2011-09-29 11:20:51

标签: oracle stored-procedures

任何人都可以提供一个简单的Oracle存储过程示例,用于一次更新两个表。

2 个答案:

答案 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;

您可以对源表进行单次扫描。

<强>更新 您甚至可以在o​​racle 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;