La regola pratica cioè, se puoi farlo in un SQL, generalmente funzionerà meglio che farlo in più istruzioni SQL.
Andrei con il MERGE se fa il lavoro.
Inoltre - un altro suggerimento:puoi evitare di ripetere i dati nella tua dichiarazione, ad esempio:
MERGE INTO table
USING (SELECT 'some_id' AS newid,
'some_val' AS newval
FROM dual)
ON (rowid = newid)
WHEN MATCHED THEN
UPDATE SET colname = newval
WHEN NOT MATCHED THEN
INSERT (rowid, colname)
VALUES (newid, newval)