欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

Oracle之UTL_FILE 包用法详解

程序员文章站 2022-06-06 19:52:10
...

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

  • Oracle之UTL_FILE 包用法详解

    结果为:

    Oracle之UTL_FILE 包用法详解


    Oracle之UTL_FILE 包用法详解

    结果为:

    Oracle之UTL_FILE 包用法详解

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

    测试程序之前:

    Oracle之UTL_FILE 包用法详解

    测试代码:

    Oracle之UTL_FILE 包用法详解

    测试程序之后:

    Oracle之UTL_FILE 包用法详解


    Oracle之UTL_FILE 包用法详解

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

    Oracle之UTL_FILE 包用法详解