Я использую DDL в хранимых процедурах: чаще всего для обрезания сводных таблиц, которые процедура затем повторно заполняет; время от времени для задач DDLish, таких как переименование столбцов импортируемой таблицы, для соответствия стандартным правилам Oracle для идентификатора или для создания первичных ключей и последовательностей для именованных таблиц. Обычно я использую
dbms_utility.exec_ddl_statement(blah);
вместо
EXECUTE IMMEDIATE blah;
предубеждение, которое я не буду пытаться оправдать. Я скажу, что упакованная процедура, предоставленная и задокументированная Oracle, предполагает, что ее нельзя запрещать повсеместно.