2016-03-30 11 views
0

Googleで類似した検索ができなかったため、このサイトを検索してもわかりませんでした。PL/SQL異なる表と比較して複数の行を更新

私がやっているのは、OG_Name(MN_Xrefからも)= GTT.Ent_Nameのどこでも、テーブルMN_XrefのModified_Nameという列の行を持つEnt_Nameという列のグローバルtempテーブル(GTTという名前の)行を更新することです。 Ent_Nameと一致するOG_Nameがない場合、Ent_Nameは更新されません。 GTTはすでにこの時点で実装されています。これはどうすればできますか?

必要に応じてもっと情報を提供できます。ありがとう!

答えて

0

このようなシナリオでは、MERGEが良いオプションの1つになります。スニペットの下の希望が役立ちます。

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; 
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; 
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; 
関連する問題