Function to extract data in insert into satement for a table.
Posted
by user269484
on Stack Overflow
See other posts from Stack Overflow
or by user269484
Published on 2010-04-08T05:22:02Z
Indexed on
2010/04/08
5:33 UTC
Read the original article
Hit count: 167
oracle10g
Hi...I m using this Function to extract the data but unable to extract LONG datatype. Can anyone help me?
create or replace Function ExtractData(v_table_name varchar2) return varchar2 As b_found boolean:=false; v_tempa varchar2(8000); v_tempb varchar2(8000); v_tempc varchar2(255); begin for tab_rec in (select table_name from user_tables where table_name=upper(v_table_name)) loop b_found:=true; v_tempa:='select ''insert into '||tab_rec.table_name||' ('; for col_rec in (select * from user_tab_columns where table_name=tab_rec.table_name order by column_id) loop if col_rec.column_id=1 then v_tempa:=v_tempa||'''||chr(10)||'''; else v_tempa:=v_tempa||',''||chr(10)||'''; v_tempb:=v_tempb||',''||chr(10)||'''; end if; v_tempa:=v_tempa||col_rec.column_name; if instr(col_rec.data_type,'CHAR') > 0 then v_tempc:='''''''''||'||col_rec.column_name||'||'''''''''; elsif instr(col_rec.data_type,'DATE') > 0 then v_tempc:='''to_date(''''''||to_char('||col_rec.column_name||',''mm/dd/yyyy hh24:mi'')||'''''',''''mm/dd/yyyy hh24:mi'''')'''; else v_tempc:=col_rec.column_name; end if; v_tempb:=v_tempb||'''||decode('||col_rec.column_name||',Null,''Null'','||v_tempc||')||'''; end loop; v_tempa:=v_tempa||') values ('||v_tempb||');'' from '||tab_rec.table_name||';'; end loop; if Not b_found then v_tempa:='-- Table '||v_table_name||' not found'; else v_tempa:=v_tempa||chr(10)||'select ''-- commit;'' from dual;'; end if; return v_tempa; end;
/
© Stack Overflow or respective owner