If you use the DDL statement with DML statements during parallel execution (semicolon on the next line) or in ANSI mode, and the DDL statement is not the last statement in the block, you will get this error.
select * from employee ;create table dept as select * from tmp_dept with no data ;update table employee set name = 'abc' where id = 101;
As you noticed, DDL will lead to implicit commits; while in a transaction either the entire transaction is completed or rolled back. I think you now have an intuition. Check if the DDL code removes and solves the problem only with DML.
Tammy source share