Oracle
 sql >> Database >  >> RDS >> Oracle

Errore di istruzione Oracle MERGE (ORA-30926)

La prima (e più ovvia) risposta è ripulire i dati in modo da non avere duplicati. È probabile che i dati di esempio forniti siano il risultato di un bug.

Per quanto riguarda il merge istruzione, se i dati sono in realtà puramente duplicati, puoi semplicemente usare distinct :

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'