Is it possible to use execute immediate "insert into table select distinct values
inside the loop.
Eg:
for c_tab_col_rec in c_tab_col loop
execute immediate 'insert into ABC(distinct_val)
select distinct '||c_tab_col_rec.column_name||' from '||c_tab_col_rec.table_name;
end loop;