我想将下面这条存储过程写成一个通用的形式,可以针对所有表,而不是只对于一张表.麻烦各位了.--向表中写入文本文件(针对于一张表而言)
create or replace procedure prc_insert_from_txt
is
v_ORG_ID test_insert_txt.org_id%type;
v_PARENT_ORG_ID test_insert_txt.parent_org_id%type;
v_ORG_CODE test_insert_txt.org_code%type;
v_name test_insert_txt.name%type; v_file utl_file.file_type;
v_buffer varchar2(32767);
j number;
k number;
begin
dbms_output.enable(buffer_size => null);
v_file:=utl_file.fopen('MYFILE','GSDG_JG_DM1.TXT','r');
loop
utl_file.get_line(v_file,v_buffer);
exit when (instr(v_buffer,',',1)=0);
j:=instr(v_buffer,',',1,1);
v_ORG_ID:=to_number(ltrim(substr(v_buffer,1,j-1))); k:=j+1;
j:=instr(v_buffer,',',1,2);
v_PARENT_ORG_ID:=to_number(ltrim(substr(v_buffer,k,j-k))); k:=j+1;
j:=instr(v_buffer,',',1,3);
v_ORG_CODE:=ltrim(substr(v_buffer,k,j-k)); k:=j+1;
j:=instr(v_buffer,',',1,4);
v_name:=ltrim(substr(v_buffer,k,j-k)); insert into test_insert_txt (org_id,parent_org_id,org_code,name)
values(v_ORG_ID,v_PARENT_ORG_ID,v_ORG_CODE,v_name);
end loop;
UTL_FILE.FCLOSE(V_FILE);
commit;
EXCEPTION
WHEN NO_DATA_FOUND THEN
UTL_FILE.FCLOSE(v_file);
dbms_output.put_line('no data found!');
COMMIT;
WHEN OTHERS THEN
dbms_output.put_line('other cause!');
end prc_insert_from_txt;
create or replace procedure prc_insert_from_txt
is
v_ORG_ID test_insert_txt.org_id%type;
v_PARENT_ORG_ID test_insert_txt.parent_org_id%type;
v_ORG_CODE test_insert_txt.org_code%type;
v_name test_insert_txt.name%type; v_file utl_file.file_type;
v_buffer varchar2(32767);
j number;
k number;
begin
dbms_output.enable(buffer_size => null);
v_file:=utl_file.fopen('MYFILE','GSDG_JG_DM1.TXT','r');
loop
utl_file.get_line(v_file,v_buffer);
exit when (instr(v_buffer,',',1)=0);
j:=instr(v_buffer,',',1,1);
v_ORG_ID:=to_number(ltrim(substr(v_buffer,1,j-1))); k:=j+1;
j:=instr(v_buffer,',',1,2);
v_PARENT_ORG_ID:=to_number(ltrim(substr(v_buffer,k,j-k))); k:=j+1;
j:=instr(v_buffer,',',1,3);
v_ORG_CODE:=ltrim(substr(v_buffer,k,j-k)); k:=j+1;
j:=instr(v_buffer,',',1,4);
v_name:=ltrim(substr(v_buffer,k,j-k)); insert into test_insert_txt (org_id,parent_org_id,org_code,name)
values(v_ORG_ID,v_PARENT_ORG_ID,v_ORG_CODE,v_name);
end loop;
UTL_FILE.FCLOSE(V_FILE);
commit;
EXCEPTION
WHEN NO_DATA_FOUND THEN
UTL_FILE.FCLOSE(v_file);
dbms_output.put_line('no data found!');
COMMIT;
WHEN OTHERS THEN
dbms_output.put_line('other cause!');
end prc_insert_from_txt;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货