create or replace function f_get_allcol(i_table_name varchar2, i_rd rowid)
  return varchar2 as
  v_sql      varchar2(4000);
  v_col_list varchar2(4000);
  v_result   varchar2(4000);
begin
  select listagg(t.COLUMN_NAME, '||') within group(order by t.COLUMN_ID)
    into v_col_list
    from dba_tab_cols t
   where t.TABLE_NAME = upper(i_table_name);
  execute immediate 'select substr(' || v_col_list || ',1,4000) from ' || i_table_name ||
                  ' where rowid = ''' || i_rd||''''
  into v_result;
  return v_result;
end;
select f_get_allcol('test1',t.rowid) from test1 t;