Oracle With Statement and Delete Together
The Oracle syntax is DELETE FROM (query). The query can be a SELECT with subquery factoring:

delete from (
   with to_delete as (
      select * from a
   ) 
   select * from to_delete 
);


The above query works in 11gR2 but fails with ORA-01732 (non-updateable view) on an old 9iR2.