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

Plsql PL/SQL在比较不同的表后更新多行,plsql,Plsql,在谷歌上找不到任何类似的东西,或者通过搜索这个网站,所以我想我会问 我要做的是用表MN_Xref中名为Modified_Name的列中的行更新名为Ent_Name的列中全局临时表(名为GTT)的行,其中OG_Name(也来自MN_Xref)=GTT.Ent_Name。如果没有OG_名称与Ent_名称匹配,则不应更新Ent_名称。此时已填充GTT。这怎么可能呢 我可以提供更多的信息,如果需要的话。谢谢 在这种情况下,合并将是一个很好的选择。希望下面的代码片段能有所帮助 MERGE INTO GTT

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

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


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

在这种情况下,合并将是一个很好的选择。希望下面的代码片段能有所帮助

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;

这应该对你有用

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;

如果我没弄错你的问题,这应该能解决

    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;