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