Pravidlo je, že pokud to můžete udělat v jednom SQL, bude to obecně fungovat lépe než ve více příkazech SQL.
Šel bych s MERGE, pokud to funguje.
Také - další návrh:můžete se vyhnout opakování údajů ve výpisu, např.:
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)