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

Dati di esempio:problema durante l'esecuzione della procedura memorizzata che consiste sia di aggiornamento che di inserimento

In realtà non lo è, fa parte di una chiave univoca composta. Quindi la tua clausola ON dovrebbe corrispondere su

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

Per inciso, l'uso di trim() nella clausola ON è preoccupante, in particolare trim(tgt.app_lse_s) . Se stai inserendo valori con spazi finali o iniziali, la tua "chiave univoca" produrrà più risultati quando li taglierai. Dovresti tagliare gli spazi quando carichi i dati dal file e inserisci i valori tagliati nella tabella.

MJL_IDX0 mi deve un indice univoco. Ciò significa che devi includere le sue colonne in qualsiasi considerazione di record univoci.

Chiaramente c'è una differenza tra la tua logica INSERT diretta e la tua logica MERGE INSERT. Devi confrontare le due affermazioni e capire qual è la differenza.