MERGE INTO TRGT_TBL AS TRGT
    USING  (SELECT  .
                    .
                    .
            FROM SURC_TBL) SURC
    ON (TRGT.KEY_ID = SURC.KEY_ID)

    WHEN MATCHED THEN
        UPDATE  SET COL1        = SURC.COL1
                ,   COL2        = SURC.COL2
                .
                .
                .
        
    WHEN NOT MATCHED THEN
        INSERT VALUES   (   SURC.COL1
                        ,   SURC.COL2
                        ,   SURC.COL3
                        ,   SURC.COL4
                        ,   ...)

    WHEN NOT MATCHED BY SOURCE THEN
        UPDATE  SET COL1  = 'XXX'
                ,   COL2  = 'XXX'
                ,   COL3  = 'XXX'
                ,   COL4  = 'XXX';