Actually, Oracle has an “INSERT ALL” statement that I believe was added in 9i and is available in 10g (someone please correct this answer if I’m wrong on that!)
It’s a pretty powerful statement that allows you to insert into multiple tables at once by performing a select from your temp table of all the columns you need, and inserting each column’s values into whichever of the target tables you specify.
The basic syntax is something like
INTO table1 VALUES(val_A, val_B)
INTO table2 VALUES(val_C, val_D)
SELECT tmp_a val_A, tmp_b val_B, tmp_c val_C, tmp_d val_D
FROM tmp_table WHERE ...
This will insert multiple rows (any matching the where clause of the select) into both table1 and table2.
More info from an Oracle article.