文件重写——急需答案 基本思路select记录到数组里面然后遍历数组写入文本文件楼主并没有把你的需求将清楚楼主是要把select出来的记录写到文本文件里吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 思路:1 使用数组,把数据写到数组中,然后把数组中的数据写到文件中。2 使用fcopy函数,在新文件中写入记录数,然后再把老文件中的内容拷到新文件中。 我需要生成的是文本文件。在存储过程的最初是用游标从数据库中提取数据,在存储过程中在对游标中的结果集一一筛选,得到真正需要的数据——这一筛选过程是必需的。=============================================================这并不意味着取数据的时候就写文件,你可以用个数组来临时保存这些数据,最后根据得到的记录数来回填数组的第一个元素,然后再将数组的所有元素顺序写入文件中。另一种方法:取数据的时候就写入文件中,然后生成一个新的文件,在新文件中写入记录数,然后使用fcopy函数,把老文件中的内容拷到新文件中。 我原本想用系统包utl_file中的fseek函数,但好像无法实现 可以吧,函数的使用方法并没有说明fseek不能用于文件的write模式,看看帮助怎么写的。 我试了方法2:取数据的时候就写入文件中,然后生成一个新的文件,在新文件中写入记录数,然后使用fcopy函数,把老文件中的内容拷到新文件中。现做个fcopy函数的功能的总结:fcopy函数的功能是将源文件中指定行复制到一个新的文件,对于已存在的新文件会被覆盖,而后生成的文件无法继续在文件尾写入。 给你一个两个文件对拷的例子。create or replace procedure pp is i number; str varchar2(1000); handle utl_file.file_type; type tarr is varray(1000) of varchar2(1000); arr tarr:=tarr(); begin i:=1; arr.extend; handle:=utl_file.fopen('e:\','test.txt','r'); loop begin utl_file.get_line(handle,str); exception when no_data_found then exit; end; i:=i+1; arr.extend; arr(i):=str; end loop; utl_file.fclose(handle); if i=1 then arr(1):=0; else arr(1):=i; end if; handle:=utl_file.fopen('e:\','new.txt','w'); for i in arr.first..arr.last loop utl_file.put_line(handle,arr(i)); end loop; utl_file.fclose(handle); exception when others then dbms_output.put_line(sqlcode); dbms_output.put_line(sqlerrm(sqlcode)); end; "写文件头的过程中无法预先计算出记录条数"========================================应该可以吧游标的 %rowcount 给你一个两个文件对拷的例子。create or replace procedure pp is i number; str varchar2(1000); handle utl_file.file_type; type tarr is varray(1000) of varchar2(1000); arr tarr:=tarr(); begin i:=1; arr.extend; handle:=utl_file.fopen('e:\','test.txt','r'); loop begin utl_file.get_line(handle,str); exception when no_data_found then exit; end; i:=i+1; arr.extend; arr(i):=str; end loop; utl_file.fclose(handle); if i=1 then arr(1):=0; else arr(1):=i; end if; handle:=utl_file.fopen('e:\','new.txt','w'); for i in arr.first..arr.last loop utl_file.put_line(handle,arr(i)); end loop; utl_file.fclose(handle); exception when others then dbms_output.put_line(sqlcode); dbms_output.put_line(sqlerrm(sqlcode)); end; 楼主写的文件格式还是看了不明白我觉得对文件的读写还是不要用oracle好用其它语言比较好,比如java,perl等 楼主如果能把你的需求明确的说出来俺可以帮你写一程序,读写文本文件。。不需要用oracle的 求高手看看这SQL该怎么优化 关于数据库缓存,高手请进!!! 请教一个查询当月每天记录的问题 触发器问题----在线等 求助各位大侠,如何在Oracle与MS-SQL数据库之间做数据同步!!!!急!急!!!急!!!!! database link 存在性能瓶颈么? *****pb连接运行在first_rows模式下的oracle的问题***** [求助] 有没有办法将Oracle数据库的所有字段导入mssql中或者Access 数据库移植后的问题:在SQL*PLUS中对表的查询错误. 请教pro*c动态方法四的问题 一个简单的sql,请指教 SQL中一个奇怪的现象
1 使用数组,把数据写到数组中,然后把数组中的数据写到文件中。
2 使用fcopy函数,在新文件中写入记录数,然后再把老文件中的内容拷到新文件中。
这并不意味着取数据的时候就写文件,你可以用个数组来临时保存这些数据,最后根据得到的记录数来回填数组的第一个元素,然后再将数组的所有元素顺序写入文件中。另一种方法:取数据的时候就写入文件中,然后生成一个新的文件,在新文件中写入记录数,然后使用fcopy函数,把老文件中的内容拷到新文件中。
取数据的时候就写入文件中,然后生成一个新的文件,在新文件中写入记录数,然后使用fcopy函数,把老文件中的内容拷到新文件中。
现做个fcopy函数的功能的总结:
fcopy函数的功能是将源文件中指定行复制到一个新的文件,对于已存在的新文件会被覆盖,而后生成的文件无法继续在文件尾写入。
i number;
str varchar2(1000);
handle utl_file.file_type;
type tarr is varray(1000) of varchar2(1000);
arr tarr:=tarr();
begin
i:=1;
arr.extend;
handle:=utl_file.fopen('e:\','test.txt','r');
loop
begin
utl_file.get_line(handle,str);
exception
when no_data_found then exit;
end;
i:=i+1;
arr.extend;
arr(i):=str;
end loop;
utl_file.fclose(handle); if i=1 then
arr(1):=0;
else
arr(1):=i;
end if;
handle:=utl_file.fopen('e:\','new.txt','w');
for i in arr.first..arr.last loop
utl_file.put_line(handle,arr(i));
end loop;
utl_file.fclose(handle);
exception
when others then
dbms_output.put_line(sqlcode);
dbms_output.put_line(sqlerrm(sqlcode));
end;
========================================
应该可以吧游标的 %rowcount
i number;
str varchar2(1000);
handle utl_file.file_type;
type tarr is varray(1000) of varchar2(1000);
arr tarr:=tarr();
begin
i:=1;
arr.extend;
handle:=utl_file.fopen('e:\','test.txt','r');
loop
begin
utl_file.get_line(handle,str);
exception
when no_data_found then exit;
end;
i:=i+1;
arr.extend;
arr(i):=str;
end loop;
utl_file.fclose(handle); if i=1 then
arr(1):=0;
else
arr(1):=i;
end if;
handle:=utl_file.fopen('e:\','new.txt','w');
for i in arr.first..arr.last loop
utl_file.put_line(handle,arr(i));
end loop;
utl_file.fclose(handle);
exception
when others then
dbms_output.put_line(sqlcode);
dbms_output.put_line(sqlerrm(sqlcode));
end;
我觉得对文件的读写还是不要用oracle好
用其它语言比较好,比如java,perl等
俺可以帮你写一程序,读写文本文件。。不需要用oracle的