Using EXECUTE IMMEDIATE inside PL\SQL Block
In Oracle when you create a table or execute an alter statement there is an implied commit. You may want to create the table in a separate function returning a boolean value with "PRAGMA AUTONOMOUS_TRANSACTION"  then the calling procedure would get a true/false response as to whether or not the table was created. you will then be able to commit or rollback your insert.