首先,需要增加对系统文件的目录的读写权限,比如现在需要增加对“c:\temp”下目录的文件操作权限,当前操作用户名为TEST。首先定义一个文件目录的别名。
CREATE OR REPLACE DIRECTORY
UTL_FILE_DIR AS
'c:\temp';
然后在管理员权限下给TEST用户增加操作目录的操作权限
GRANT READ, WRITE ON DIRECTORY UTL_FILE_DIR TO TEST WITH GRANT OPTION;
这样,当前用户下就有了对'c:\temp'目录的读写权限。
下面给出一个读文件的例子
G_FILEUTL_FILE.FILE_TYPE;
G_LINEVARCHAR2(1600);
G_FILEPATHVARCHAR2(20) := 'UTL_FILE_DIR';--ファイルパス
G_FILENAMEVARCHAR2(20) := 'test.txt';--ファイル名称
BEGIN
G_FILE := UTL_FILE.FOPEN(G_FILEPATH, G_FILENAME, 'R');
LOOP
BEGIN
--ファイルデータを取得する
UTL_FILE.GET_LINE(G_FILE, G_LINE, 2000);
DBMS_OUTPUT.PUT_LINE(LENGTHB(G_LINE));
EXCEPTION
WHEN NO_DATA_FOUND THEN
EXIT;
END;
END LOOP;
--ファイルをCLOSED
UTL_FILE.FCLOSE(G_FILE);
END;
这样就可以对test.txt文件的读取操作,读写缓存是1023个字节,如果文件一行超过了1023个字节,则会文件读写错误。在Oracle9i以后在打开文件的时候多了一个参数,也就是文件读取缓存的参数,如下所示
G_FILE := UTL_FILE.FOPEN(G_FILEPATH, G_FILENAME, 'R', 3000);
这样,读写缓存就达到了3000,当文件超过3000行的话就会产生错误。在3000行以内则会顺利读写。