Originally posted by stecal
You'll be wanting to use PL/SQL, cursors, and loops. Cursor for each table. Loop thru each cursor comparing values/existence/whatever it is that makes you decide to insert/update from the temp table. All of this done in a PL/SQL prodedure. Piece of cake.
You can't be serious when you suggest using "Cursor for each table. Loop thru each cursor comparing...". Why would you need more than one cursor? What use would it be of a cursor on a *master table*? And you don't need to perform any comparison, Oracle will do it for you (unless original poster will come back explaining his master table has no primary key).
Code:
BEGIN
  FOR r IN (SELECT * FROM temp_table) LOOP
    BEGIN
      INSERT INTO master_table (colA, colB, ....)
      VALUES (r.col1, r.col2, ....);
    EXCEPTION WHEN DUP_VAL_ON_INDEX THEN
      UPDATE master_table SET colB = r.col2, .....
      WHERE colA = r.col1;
    END;
  END;
END;
But as Chris said, pure SQL approach should be inspected first to see if it's feasible.