2013/11/12
一、概述
------------------------------------------------------------------------------------
二、实验步骤
1.导入utl_file包。
2.建立文件导出目录并赋予读写权限
create or replace directory data_out as 'd:\';
grant read ,write on directory data_out to scott;
3.对scott用户赋予执行utl_file包的权限。
grant execute on utl_file to scott;
4.修改utl_file_dir参数,此参数为静态参数,然后重启数据库。
alter system set utl_file_dir = 'd:\' scope = spfile;
5.创建存储过程进行表数据导出
create or replace procedure export_2_excel(pfile_name
begin
end;
----------------------------------------------------------
附:utl_file包的介绍
---------------------------------------------------------------
1.UTL_FILE.FOPEN
--FOPEN会打开指定文件并返回一个文件句柄用于操作文件。
RETURN file_type;
3种文件打开模式:
R 只读模式。一般配合UTL_FILE的GET_LINE来读文件。
W 写(替换)模式。文件的所有行会被删除。PUT, PUT_LINE, NEW_LINE, PUTF和FFLUSH都可使用。
A 写(附加)模式。原文件的所有行会被保留。在最末尾行附加新行。PUT, PUT_LINE, NEW_LINE, PUTF和FFLUSH都可使用。
2.UTL_FILE.IS_OPEN
--如果文件句柄指定的文件已打开,返回TRUE,否则FALSE
FUNCTION UTL_FILE.IS_OPEN (file IN UTL_FILE.FILE_TYPE--文件句柄
RETURN BOOLEAN;
3.UTL_FILE.GET_LINE
--UTL_FILE只提供一个方法去读取数据:GET_LINE
读取指定文件的一行到提供的缓存。
PROCEDURE UTL_FILE.GET_LINE(file
4.UTL_FILE.PUT
--在当前行输出数据
--UTL_FILE.PUT输出数据时不会附加行终止符。
PROCEDURE UTL_FILE.PUT(file
5.UTL_FILE.NEW_LINE
--在当前位置输出新行或行终止符,使用UTL_FILE.PUT必须使用NEW_LINE来结束当前行。
--但可以使用PUT_LINE输出带有行终止符的完整行数据。
PROCEDURE UTL_FILE.NEW_LINE(file IN UTL_FILE.FILE_TYPE, --文件句柄
6.UTL_FILE.PUT_LINE
--输出一个字符串以及一个与系统有关的行终止符。
--PUT_LINE相当于PUT后加上NEW_LINE;也相当于PUTF的格式串"%s/n"。
PROCEDURE UTL_FILE.PUT_LINE (file
7.UTL_FILE.PUTF
以一个模版样式输出至多5个字符串,类似C中的printf
PROCEDURE UTL_FILE.PUTF(file
格式串可使用以下样式
%s
在格式串中可以使用最多5个%s,与后面的5个参数一一对应
/n
换行符。在格式串中没有个数限制
%s会被后面的参数依次填充,如果没有足够的参数,%s会被忽视,不被写入文件
8.UTL_FILE.FFLUSH
--确保所有数据写入文件。
--操作系统可能会缓存数据来提高性能。因此可能调用put后,打开文件却看不到写入的数据。
--在关闭文件前要读取数据的话可以使用UTL_FILE.FFLUSH。
PROCEDURE UTL_FILE.FFLUSH (file IN UTL_FILE.FILE_TYPE);
9.UTL_FILE.FCLOSE
--关闭文件
PROCEDURE UTL_FILE.FCLOSE (file IN OUT FILE_TYPE);
10.UTL_FILE.FCLOSE_ALL
--关闭所有已打开的文件
PROCEDURE UTL_FILE.FCLOSE_ALL;
在结束程序时要确保所有打开的文件已关闭,可使用FCLOSE_ALL。