UTL_FILE学习

UTL_FILE文件操作包:

1,UTL_FILE.FOPEN(location in varchar2,filename in varchar2,open_mode in varchar2)

location 路径

FILENAME 文件名

OPEN_MODE 打开模式:R 读,W 写,A 附加文本,如果文件不存在,会用W先创建出来,W有覆盖功能,其中location并不能简单的指定为'D:/temp'等路径,需要建立一个directory变量并付给用户权限:

创建directory

create or replace directory testfile as '/home/oracle/user1/test';

给用户授权

grant read,write on directory testfile to user1; 

grant execute on utl_file to user1;

然后就可以用UTL_FILE包建立文件了:

v_file utl_file.file_type;    句柄

v_file := utl_file.fopen('dir','filename','w');

2,utl_file.is_open 如果文件句柄指定的文件已打开,返回TRUE,否则FALSE

FUNCTION UTL_FILE.IS_OPEN(FILE IN UTL_FILE.FILE_TYPE) RETURN BOOLEAN;

UTL_FILE只提供一个方法去读取数据:GET_LINE

3,UTL_FILE.GET_LINE  读取指定文件的一行到提供的缓存

PROCEDUREUTL_FILE.GET_LINE

(FILE IN UTL_FILE.FILE_TYPE,   

BUFFER OUT VARCHAR2);

FILE 由FOPEN返回的文件句柄  buffer 读取的一行数据的存放缓存,buffer必须足够大,否则,会出现VALUE_ERROR异常,行终止符不被传进BUFFER。

 

4UTL_FILE.PUT   在当前行输出数据

PROCEDURE UTL_FILE.PUT

(FILE IN UTL_FILE.FILE_TYPE,

BUFFER OUT VARCHAR2);

 

5,UTL_FILE.NEW_LINE 在当前位置输出新行或行终止符,必须使用NEW_LINE来结束当前行,或者使用PUT_LINE输出带有终止符的完整行数据。

PROCEDURE UTL_FILE.NEW_LINE

(FILE IN UTL_FILE.FILE_TYPE,

LINES IN NATURAL:=1);

FILE 由FOPEN返回的文件句柄

lines 要插入的行数,如果不指定LINES参数,NEW_LINE会只用默认值1,如果要插入空白行,可以使用:UTL_FILE.NEW_LINE(my_file,2);如果参数为0或者负数,什么都不会写入文本。

 

6,utl_file.put_line 输出一个字符串以及一个与系统有关的终止符

procedure utl_file.put_line

(file in utl_file.file_type,

buffer in varchar2);

在调用utl_file.put_line前,必须先打开文件。

PUT_LINE相当于PUT后面加上NEW_LINE;也想当于putf的格式串“%s/n”.

 

7,utl_file.putf 以一个模板式输出至多5个字符串,类似C中的printf 

procedure utl_file.putf 

(file in file_type,

format in varchar2,

arg1 in varchar2 default null,

arg2 in varchar2 default null,

arg3 in varchar2 default null,

arg4 in varchar2 default null,

arg5 in varchar2 default null);

%s 在格式串中可以使用最多5个%s,与后面的5个参数已一一对应。

%n 换行符。

 

8,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);

utl_file.fclose_all 关闭所有已打开的文件

procedure utl_file.fclose_all;

在结束程序时可以使用fclose_all也可以在exception使用,当异常退出时,文件也会被关闭

exception 

   when others 

then 

utl_file.fclose_all;

  ...other clean up activities...

end;

 

你可能感兴趣的:(oracle)