Wie wäre es damit, der äußere Join bedeutet rid
wird null sein und somit fehlschlagen und so in den WHEN NOT MATCHED
fließen Teil der Erklärung, falls vorhanden
MERGE INTO target_table tgt
USING ( SELECT t2.ROWID AS rid
, s2.c2
FROM target_table t2
, source_table s2
WHERE t2.c1 (+) = s2.c1
) src
ON (tgt.rowid = src.rid)
WHEN MATCHED THEN
UPDATE SET tgt.c1=src.c2