Las sentencias que modifican las estructuras o crean nuesvas estructuras de datos no permiten hacer rollback.
Por otro lado con PL/SQL si puedes crear estructuras (usa DDL) y usar otras sentencuias, esto lo puedes hacer de dos formas
1- a traves de la sentencia execute immediate, la cual recuibe como parametro un string con lo que piensas ejecutar en DDL o otro tipo desentencias sql
2- a traves del package incorporado de oracle que se llama DBMS_SQL usando sus metodos: DBMS_SQL.OPEN_CURSOR, DBMS_SQL.PARSE ,DBMS_SQL.BIND_VARIABLE , DBMS_SQL.DEFINE_COLUMN, DBMS_SQL.EXECUTE, DBMS_SQL.FETCH_ROWS, DBMS_SQL.COLUMN_VALUE, DBMS_SQL.IS_OPEN , DBMS_SQL.CLOSE_CURSOR etc.