Utl_File

Utl_File


Oracle9i Database 9.2.0 版中引入的增强功能概述

在 9.2.0 版之前,通过 UTL_FILE_DIR 初始化参数来指示文件目录。这种方法的缺点是,要弹出实例来改变目录列表,这样就不存在安全的模式(所有用户都可以存取任意目录上的文件)。9.2.0 版允许对 Utl_File 使用与对 BFILE 相同的机制(目录模式对象)。您应当认为 UTL_FILE_DIR 初始化参数是不鼓励使用的。

Utl_File.Get_LineUtl_File.Put_Line 的行长界限已经从 1K 增加到了 32K。

已经引入了以下新的 API 基元……

用于操作系统文件管理
  • procedure Fgetattr
  • procedure Fcopy
  • procedure Fremove
  • procedure Frename
用于处理RAW数据
  • procedure Fseek
  • function Fgetpos
  • procedure Get_Raw
  • procedure Put_Raw

此外,Get_LineGet_Line_Nchar 有了一个新的缺省二进制整数参数 len。而 Put_Line 有了一个新的缺省布尔参数 autoflush

通过透明的内在再实现,Utl_File 的性能得到了改善。

为了在以下测试中发现一些可能的异常,您需要作为 Oracle 用户登陆存放数据库的计算机,然后创建和删除文件。

创建 UTL_FILE_TEST 目录
PROGRAMMER 测试用户

通过提供一个目录名作为实参,这些示一律使用 9.2.0 版中新增的方法来提供位置形参。我们使用同样的指定用于用户卸载文件的文件系统目录。为方便起见,我们让测试用户查询 v$parameter 视图和执行 Dbms_Pipe创建用户

API

此包展示了以下过程和函数。它们都没有过载。

打开,进行写操作然后关闭

  • function Fopen
  • function Is_Open
  • procedure Put_Line
  • procedure Fclose
  • procedure Fclose_All
此示例示范了以上所有的 API。这示范了 9.2.0 版中使用目录模式对象进行打开操作的新功能。

摹拟 Unix ls, cp, mv, rm

  • procedure Fgetattr
  • procedure Fcopy
  • procedure Frename
  • procedure Fremove
此示例示范了以上所有的 API,这些都是 9.2.0 版中新增的内容。

处理面向行的字符数据

此示例演示了 autoflush,方法是将一个行写至文件然后等待通过 Dbms_Pipe 从另一个会话发来的消息,使您有时间用 tail -f (Unix 上,或其他操作系统上的等价命令)来进行观察。创建 Wait 包。否则,此示例仅演示 9.2.0 版之前的功能。
  • procedure Get_Line
  • procedure Put
  • procedure Putf
  • procedure Put_Line
  • procedure New_Line
  • procedure Fflush
此示例示范了以上所有的 API,并范了新的 Get_Linelen 参数和 Put_Lineautoflush参数。

处理面向行的 NCHAR 数据

Put_Line_Nchar 没有 autoflush 参数之外,使用 NCHAR 的每个过程(或函数)在形式和内容上都与其对应的 VARCHAR2 相同。因而不提供代码示例。
  • function Fopen_Nchar
  • procedure Get_Line_Nchar
  • procedure Put_Nchar
  • procedure Putf_Nchar
  • procedure Put_Line_Nchar

处理RAW数据

  • procedure Put_Raw
  • procedure Get_Raw
  • function Fgetpos
  • procedure Fseek

此示例示范 Get_Raw此示例示范 Put_Raw此示例示范 Fseek

注意:在 Windows 2000 平台上的 9.2.0 版中出现的特定端口 Bug #2546782 报告了来自 Utl_File.Put_Raw 的错误输出。

异常

  • file_open
  • charsetmismatch
  • invalid_path
  • invalid_mode
  • invalid_filehandle
  • invalid_operation
  • read_error
  • write_error
  • internal_error
  • invalid_maxlinesize
  • invalid_filename
  • access_denied
  • invalid_offset
  • delete_failed
  • rename_failed

Bryn Llewellyn,PL/SQL 产品经理,Oracle Corp
最新更新时间为 2002 年 6 月 10 日

寄送此页面
Printer View 打印机视图