一、说明
UTL_FILE是oracle提供的一个标准的工具包,用来读写文件使用。
二、路径
包UTL_FILE用于读写操作系统的文件,前提是首先创建路径(Directory)并授权。ORACLE目录的作用就是让ORACLE数据库和操作系统之前进行文件的交互。
为了创建目录,必须具有DBA角色或者赋予了CREATE ANY DIRECTORY权限。如果普通用户被赋予了CREATE ANY DIRECTORY权限,那么用户就自动具备目录的READ和WRITE权限
创建:CREATE [OR REPLACE] DIRECTORY directory_name AS 'path_name' ;
create or replace directory DB_OUT as '/usr/local/xilen/DB_OUT';
赋权:GRANT READ[,WRITE] ON DIRECTORY directory_namne TO user_name;
--路径授权,添加对路径读、写权限
grant read,write on directory DB_OUT to xilen;
--utl_file包授权,添加执行权限
GRANT EXECUTE ON utl_file TO xilen;
查看(具有READ和WRITE权限的目录):
-- 限制单列的显示长度
COL DIRECTORY_PATH format a60;
-- 查询路径
SELECT DIRECTORY_NAME, DIRECTORY_PATH, GRANTEE, PRIVILEGE FROM USER_TAB_PRIVS T, ALL_DIRECTORIES D WHERE T.TABLE_NAME(+)=D.DIRECTORY_NAME;
三、详解
1、FILE_TYPE
该类型是UTL_FILE包中定义的记录类型,其成员是私有的,不能够被直接引用。该类型的定义如下:
TYPE file_type IS RECORD(
id BINARY_INTEGER,
datatype BINARY_INTEGER
);
2、FOPEN
该函数用于打开文件。使用这个函数最多可以打开50个文件,语法如下:
UTL_FILE.FOPEN(
location IN VARCHAR2, -- 文件