UTL_FILE包可以用来读写操作系统上的文本文件,UTL_FILE提供了在客户端(FORM等等)和服务器端的文件访问功能。
UTL_FILE包可以用来读写操作系统上的文本文件,UTL_FILE提供了在客户端(FORM等等)和服务器端的文件访问功能。
创建测试目录:
新建一个command window;
创建目录:(以system用户登录数据库)
SQL> create or replace directory cux_log_dir as '/home/appltest/debug';
Directory created
赋权限。
SQL> grant read, write on directory cux_log_dir to public;
Grant succeeded
检查目录是否成功创建
select * FROM all_directories dir WHERE dir.DIRECTORY_NAME = 'CUX_LOG_DIR';
过程和函数:
语法:
UTL_FILE.FOPEN (location IN VARCHAR2,
filename IN VARCHAR2,
open_mode IN VARCHAR2,
max_linesize IN BINARY_INTEGER DEFAULT 1024)RETURN FILE_TYPE;
Filename略。
open_mode指明文件打开的模式。有如下几种:
max_linesize指定文件文本每一行存放的最大字符数。
功能:关闭一个打开的文件。
结果为:
结果为:
语法:
UTL_FILE.FCOPY ( src_locationIN VARCHAR2,
src_filenameIN VARCHAR2,
dest_locationIN VARCHAR2,
dest_filename IN VARCHAR2,
start_lineIN BINARY_INTEGER DEFAULT 1,
end_lineIN BINARY_INTEGER DEFAULT NULL);
src_filename将要被复制的来源文件
dest_location 被创建的目标文件存放的目录名。
dest_filename 从来源文件创建的目标文件。
测试程序之前:
测试代码:
测试程序之后:
语法:
UTL_FILE.FFLUSH (file IN FILE_TYPE);
filename IN VARCHAR2,
fexists OUT BOOLEAN,
file_length OUT NUMBER,
block_size OUT BINARY_INTEGER);
block_size文件系统块的字节大小。
测试:
DECLARE
l_loc all_directories.directory_name%TYPE := 'CUX_LOG_DIR';
l_file utl_file.file_type;
l_file_exsits BOOLEAN;
l_file_length NUMBER;
l_block_size BINARY_INTEGER;
l_buffer VARCHAR2(1024);
BEGIN
utl_file.fgetattr(location => l_loc,
filename => 'l001.log',
fexists => l_file_exsits,
file_length => l_file_length,
block_size => l_block_size);
IF l_file_exsits THEN
l_file := utl_file.fopen(location => l_loc,
filename => 'l001.log',
open_mode => 'R');
dbms_output.put_line('file exsits');
dbms_output.put_line('file length:' || l_file_length);
dbms_output.put_line('block sieze :' || l_block_size);
END IF;
utl_file.fclose_all;
END;
,