可以用 Oracle 中的 utl_file 包进行数据写入文件的操作,具体代码如下:declare
myonwer char(20);
mytable char(20);
mychar char(400);
mychar1 char(255);
/*设置一个文件对象*/
myft utl_file.file_type;
begin
/*要执行的SQL语句*/
myonwer:='ss';
mytable:='bb';
mychar:=getcolumnnames(trim(myonwer),trim(mytable));
mychar1:='insert into ' || trim(myonwer) || '.' || trim(mytable) || ' select ' || trim(mychar) || ' from ZEALOT.' || trim(mytable) || '_BAK;';
/*打开要写的文件*/
myft:=utl_file.fopen('D:\aa','mytest.txt','a');
/*将要写的内容写入文件*/
utl_file.put_line(myft,mychar1);
/*关闭文件*/
utl_file.fclose(myft);
end;
一定要注意在使用 utl_file 包前一定要设置一个 Orcale 中的目录对象
myonwer char(20);
mytable char(20);
mychar char(400);
mychar1 char(255);
/*设置一个文件对象*/
myft utl_file.file_type;
begin
/*要执行的SQL语句*/
myonwer:='ss';
mytable:='bb';
mychar:=getcolumnnames(trim(myonwer),trim(mytable));
mychar1:='insert into ' || trim(myonwer) || '.' || trim(mytable) || ' select ' || trim(mychar) || ' from ZEALOT.' || trim(mytable) || '_BAK;';
/*打开要写的文件*/
myft:=utl_file.fopen('D:\aa','mytest.txt','a');
/*将要写的内容写入文件*/
utl_file.put_line(myft,mychar1);
/*关闭文件*/
utl_file.fclose(myft);
end;
一定要注意在使用 utl_file 包前一定要设置一个 Orcale 中的目录对象
f UTL_FILE.file_type;
s varchar2(200);
a varchar2(200);
path varchar2(50);
begin
path:='c:';
f:=utl_file.fopen('c:','aa.CSV','R');
loop
utl_file.get_line(f,s);
N:=INSTR(S,',',1,1);
a := substr(s,.....)
select count(*) into i from aa where aa = a;
if i > 0 then
update .... set ...
else
insert into .....
end if;
end loop;
utl_file.fclose(f);
COMMIT;
EXCEPTION
when NO_DATA_FOUND then
utl_file.fclose(f);
rollback;
end;
/
不过,我是在客户端按照用户输入的条件得到一个recordset,然后把它保存到客户端。用存储过程恐怕不行吧
recordset有个save函数,奇怪的是只能保存为xml文件和ADTG文件。难道不能直接保存成文本文件吗?