Não há necessidade de escrever nosso próprio procedimento armazenado para fazer isso. A Oracle fornece um procedimento armazenado integrado que podemos usar:DBMS_UTILITY.EXEC_DDL_STATEMENT :
DBMS_UTILITY.EXEC_DDL_STATEMENT('create table t1 (id number)');
Na verdade, isso é mais seguro do que o procedimento de solução alternativa sugerido na resposta aceita pois não permite a execução de DML e por isso está protegido contra injeção de SQL