DDL dentro do código PL / SQL é mais exceção do que a necessidade real. O Parse pode ser visto como verificação de estrutura, que será perdida se sua estrutura for alterada na execução. Os procedimentos devem ser analisados novamente em outros objetos (tabelas ou outro código pl / sql, visualizações etc.). Cada vez que o objeto for alterado, ele deverá ser recompilado. Portanto, criar código analisado de algo que não seja a estrutura de mudança não pode ser verificado e, como tal, compilado. Considere caso
DROP TABLE T1;
Durante o tempo de análise, a tabela seria encontrada e o procedimento compilado com êxito, mas na 1ª execução, a tabela é descartada e seu código não é mais válido (da próxima vez, DROP TABLE resultaria em erro). Da mesma forma, qualquer alteração na tabela DDL criaria a necessidade de recompilar, perdendo a vantagem da análise de código.