utl_file使用总结

王朝网络·other·作者佚名  2006-01-10
宽屏版  字体: |||超大  

环境:windows 2000 server + oracle 8.1.7

1.读文件举例:

-- 环境 windows 2000 server + oracle 8.1.7

-- 先在 init.ora中的参数utl_file_dir

-- 例: utl_file_dir=(d:\test,e:\\,e:\share)

--

set serveroutput on size 1000000 format wrapped

create or replace procedure read_txtfile( -- 读一个文本文件,并在sqlplus中显示其内容

path in varchar2,

name in varchar2

)

as

l_output utl_file.file_type;

str varchar2(1000);

begin

l_output:=utl_file.fopen(path,name,'r',2000); -- 每行最大字节数最多为32K bytes

--l_output:=utl_file.fopen(path,name,'r'); -- 每行最大字节数最多为1023 bytes

loop

utl_file.get_line(l_output,str);

dbms_output.put_line(str);

end loop;

exception

when no_data_found then

utl_file.fclose(l_output);

when utl_file.invalid_path then

raise_application_error(-20001,'INVALID_PATH!');

when utl_file.invalid_mode then

raise_application_error(-20002,'INVALID_MODE!');

when utl_file.invalid_filehandle then

raise_application_error(-20003,'INVALID_FILEHANDLE!');

when utl_file.invalid_operation then

raise_application_error(-20004,'INVALID_OPERATION!');

when utl_file.read_error then

raise_application_error(-20005,'READ_ERROR!');

when utl_file.write_error then

raise_application_error(-20006,'WRITE_ERROR!');

when utl_file.internal_error then

raise_application_error(-20007,'INTERNAL_ERROR!');

when others then

str:=sqlerrm(sqlcode);

dbms_output.put_line(str);

end;

/

--SQL> execute read_txtfile('d:\test','test.txt');

--日本SONY(索尼) 1万/月,仅要研究生

--韩国三星电子中国总部 25万/年

--法国索姆软件,年薪20万/年,赴欧工作

--美国Cisco(思科)15000/月,仅要研究生

--美国INTEL(英特尔) 13000/月

--美国IBM 5000左右/月

--德国西门子 8000 /月

--PL/SQL 过程已成功完成。

2.写文件举例

-- 环境 windows 2000 server + oracle 8.1.7

-- 先在 init.ora中的参数utl_file_dir

-- 例: utl_file_dir=(d:\test,e:\\,e:\share)

--

set serveroutput on size 1000000 format wrapped

create or replace procedure write_txtfile( -- 写一个字符串到指定文本文件中

path in varchar2,

name in varchar2,

pstr in varchar2

)

as

l_output utl_file.file_type;

str varchar2(1000);

begin

l_output:=utl_file.fopen(path,name,'a',2000); -- 每行最大字节数最多为32K bytes

--l_output:=utl_file.fopen(path,name,'a'); -- 每行最大字节数最多为1023 bytes

utl_file.put_line(l_output,pstr);

utl_file.fclose(l_output);

exception

when utl_file.invalid_path then

raise_application_error(-20001,'INVALID_PATH!');

when utl_file.invalid_mode then

raise_application_error(-20002,'INVALID_MODE!');

when utl_file.invalid_filehandle then

raise_application_error(-20003,'INVALID_FILEHANDLE!');

when utl_file.invalid_operation then

raise_application_error(-20004,'INVALID_OPERATION!');

when utl_file.read_error then

raise_application_error(-20005,'READ_ERROR!');

when utl_file.write_error then

raise_application_error(-20006,'WRITE_ERROR!');

when utl_file.internal_error then

raise_application_error(-20007,'INTERNAL_ERROR!');

when others then

str:=sqlerrm(sqlcode);

dbms_output.put_line(str);

end;

/

--SQL> execute write_txtfile('e:\','njhart2003.txt','hello oracle,i like oracle!');

--PL/SQL 过程已成功完成。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有