Oracle之UTL_FILE 包用法详解

来源:这里教程网 时间:2026-02-27 19:10:56 作者:

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';

 

过程和函数:

FOPEN

语法

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指定文件文本每一行存放的最大字符数。

 

FCLOSE

功能:关闭一个打开的文件。

 

FCLOSE_ALL


结果为:


结果为:

FCOPY

语法

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 从来源文件创建的目标文件。

 

测试程序之前:

测试代码:

测试程序之后:


FFLUSH

语法

UTL_FILE.FFLUSH (file IN FILE_TYPE);

 

FGETATTR

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;

相关推荐

热文推荐