PL / SQL在与不同的表进行比较后更新多行

时间:2016-03-30 19:19:44

标签: plsql

在谷歌或通过搜索这个网站找不到类似的东西,所以我想我会问。

我要做的是更新名为Ent_Name的列中的全局临时表(名为GTT)行,其中包含来自表MN_Xref中名为Modified_Name的列中的行,其中OG_Name(也来自MN_Xref)= GTT.Ent_Name。如果没有与Ent_Name匹配的OG_Name,则不应更新Ent_Name。此时GTT已经填充。怎么可以这样做?

如果需要,我可以提供更多信息。谢谢!

3 个答案:

答案 0 :(得分:0)

对于这种情况,MERGE将是一个很好的选择。希望在片段下方有所帮助。

MERGE INTO GTT USING MN_REF
ON ( gtt.ENT_NAME = MN_REF.OG_NM)
WHEN MATCHED THEN 
UPDATE SET
ENT_NAME = MN_REF.MODIFIED_NAME;

答案 1 :(得分:0)

这应该对你有用

UPDATE 
(
   select GTT.Ent_Name          old_name
        , MN_Xref.Modified_Name new_name
   FROM GTT INNER JOIN MN_Xref ON (GTT.Ent_Name = MN_Xref.OG_Name)
)
SET old_name = new_name;

答案 2 :(得分:0)

如果我正确地解决了你的问题,这应该解决它

    declare 
  cursor c is
select * from MN_Xref;

begin
for i in c loop
update GTT g
   set g.Ent_Name = i.Modified_Name
 where g.Ent_Name = i.OG_Name;
commit;
end loop;
end;