2016-03-30 8 views
0
zu anderen Tisch zu vergleichen

konnte nichts Vergleichbares auf Google oder durch die Suche über diese Seite finden, so dass ich dachte, ich würde fragen.PL/SQL-Update mehrere Zeilen nach

Ich versuche zu aktualisieren, eine globale temporäre Tabelle (benannte GTT) Zeilen in einer Spalte namens Ent_Name mit Zeilen aus einer Spalte namens Modified_Name in Tabelle MN_Xref wo immer OG_Name (auch von MN_Xref) = GTT.Ent_Name. Wenn kein OG_Name mit Ent_Name übereinstimmt, sollte Ent_Name nicht aktualisiert werden. GTT wurde bereits an dieser Stelle bevölkert. Wie könnte das gemacht werden?

kann ich weitere Informationen zur Verfügung stellen, wenn es sein muss. Vielen Dank!

Antwort

0

wird hier für diese Art von Szenario MERGE eine der guten Möglichkeiten sein. Hoffnung unten Schnipsel hilft.

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

Dies sollte für Sie arbeiten

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

wenn ich Ihr Problem richtig hat, sollte dies es lösen

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;