Any better method to UPSERT into a table, provided :
Firstly, you don't have a WHERE in your UPDATE so it will update every row of the table.
Secondly, have you used a mixed case table name. If you do a
CREATE TABLE "testOne" (ID NUMBER);
then the table name will be stored as testOne. But when you do an UPDATE testOne is will be treated as UPDATE TESTONE and you'll get a "no such table" error.
Avoid using mixed case table names. If you absolutely must, then you'll need to quote them in the dynamic SQL statement