当前位置:Gxlcms > mysql > Oracle之UTL_FILE包用法详解

Oracle之UTL_FILE包用法详解

时间:2021-07-01 10:21:17 帮助过:156人阅读

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;

    linux

    人气教程排行