Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Beispieldaten – Problem beim Ausführen einer gespeicherten Prozedur, die sowohl Aktualisierungs- als auch Einfügeanweisungen umfasst

Eigentlich ist es das nicht, es ist Teil eines zusammengesetzten eindeutigen Schlüssels. Ihre ON-Klausel sollte also wirklich auf

passen
on (tgt.app_lse_s  = src.app_lse_s
    and tgt.dt_ent_s = src.dt_ent_s)

Übrigens die Verwendung von trim() in der ON-Klausel ist besorgniserregend, insbesondere trim(tgt.app_lse_s) . Wenn Sie Werte mit nachgestellten oder führenden Leerzeichen einfügen, erzeugt Ihr "eindeutiger Schlüssel" mehrere Treffer, wenn Sie sie kürzen. Sie sollten die Leerzeichen kürzen, wenn Sie die Daten aus der Datei laden und gekürzte Werte in Ihre Tabelle einfügen.

MJL_IDX0 muss mir einen eindeutigen Index. Das bedeutet, dass Sie seine Spalten in jede Betrachtung eindeutiger Datensätze einbeziehen müssen.

Es gibt eindeutig einen Unterschied zwischen Ihrer direkten INSERT-Logik und Ihrer MERGE INSERT-Logik. Sie müssen die beiden Aussagen vergleichen und herausfinden, was der Unterschied ist.