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

Oracle MERGE-Anweisungsfehler (ORA-30926)

Die erste (und offensichtlichste) Antwort ist, die Daten zu bereinigen, damit Sie keine Duplikate haben. Es ist wahrscheinlich, dass die von Ihnen bereitgestellten Beispieldaten das Ergebnis eines Fehlers sind.

Was das merge betrifft -Anweisung, wenn die Daten tatsächlich rein dupliziert sind, können Sie einfach distinct verwenden :

MERGE INTO maintable pr
USING      (SELECT DISTINCT contract,
                            membertype,
                            address1,
                            city,
                            state,
                            zipcode,
                            countrycode
            FROM   incrementaltable pra
            WHERE  pra.membertype = 'Parent')
ON         (pr.contract = pra.contract)
WHEN MATCHED THEN
   UPDATE SET pr.address1 = pra.address1,
              pr.city = pra.city,
              pr.state = pra.sate,
              pr.zipcode = pra.zipcode,
              pr.countrycode = pra.countrycode
      WHERE      address1 IS NULL AND pr.membertype <> 'Parent'