DDL dentro del código PL / SQL es más una excepción que una necesidad real. Parse puede verse como verificación de estructura, que se pierde si su estructura cambia en la ejecución. Los procedimientos están destinados a analizarse nuevamente otros objetos (tablas u otro código pl / sql, vistas, etc.). Cada vez que el objeto cambia, se debe volver a compilar. Por lo tanto, hacer un código analizado de algo que no sea la estructura de cambio no puede verificarse y, como tal, compilarse. Considerar caso
DROP TABLE T1;
Durante el tiempo de análisis, la tabla se encontraría y el procedimiento se compilaría con éxito, pero en la primera ejecución, la tabla se descarta y su código ya no es válido (la próxima vez que DROP TABLE resulte en un error). Del mismo modo, cualquier cambio en la tabla DDL crearía la necesidad de volver a compilar, por lo que perdería la ventaja del análisis de código.