Sorry - I dont know what you mean. Do you mean someone passes you the column names and data types and you run a create table command ?
In that case, it would just be a plsql routine - a basic example below, but you could extend it
SQL> create or replace
2 procedure GEN_TAB(p_tname varchar2, p_cols sys.odcivarchar2list, p_datatypes sys.odcivarchar2list) is
3 ddl varchar2(32767);
4 begin
5 ddl := 'create table '||p_tname||'(';
6 for i in 1 .. p_cols.count loop
7 ddl := ddl || p_cols(i)||' '||p_datatypes(i)||',';
8 end loop;
9 ddl := rtrim(ddl,',')|| ')';
10
11 dbms_output.put_line(ddl);
12 end;
13 /
Procedure created.
SQL>
SQL>
SQL> set serverout on
SQL> exec gen_tab('my_tab',sys.odcivarchar2list('a','b','c'),sys.odcivarchar2list('int','date','int'));
create table my_tab(a int,b date,c int)
PL/SQL procedure successfully completed.