FOPEN 函数 - 打开文件

FOPEN 函数打开文件以执行 I/O。

语法

阅读语法图跳过直观语法图UTL_FILE.FOPEN (location,filename, open_mode,max_linesize)

返回值

此函数返回类型为 UTL_FILE.FILE_TYPE 的值,用于指示已打开文件的句柄。

函数参数

location
类型为 VARCHAR(128) 的输入自变量,用于指定包含该文件的目录的别名。
filename
类型为 VARCHAR(255) 的输入自变量,用于指定该文件的名称。
open_mode
类型为 VARCHAR(10) 的输入自变量,用于指定该文件的打开方式:
a
追加至文件
r
读取文件
w
写至文件
max_linesize
类型为 INTEGER 的可选输入自变量,用于指定行的最大大小(以字符计)。缺省值为 1024 字节。 在读取方式下,如果尝试读取大小超过 max_linesize 的行,那么会抛出异常。在写入和追加方式下,如果尝试写入大小超过 max_linesize 的行,那么会抛出异常。行结束字符不会计入行大小。

权限

对 UTL_FILE 模块的 EXECUTE 特权。

示例

打开文件,将某些文本写至该文件,然后关闭该文件。


SET SERVEROUTPUT ON@

CREATE OR REPLACE PROCEDURE proc1()
BEGIN
  DECLARE  v_filehandle    UTL_FILE.FILE_TYPE;
  DECLARE  isOpen          BOOLEAN;
  DECLARE  v_dirAlias      VARCHAR(50) DEFAULT 'mydir';
  DECLARE  v_filename      VARCHAR(20) DEFAULT 'myfile.csv';  
  CALL UTL_DIR.CREATE_OR_REPLACE_DIRECTORY('mydir', '/tmp');
  SET v_filehandle = UTL_FILE.FOPEN(v_dirAlias,v_filename,'w');
  SET isOpen = UTL_FILE.IS_OPEN( v_filehandle );
    IF isOpen != TRUE THEN
      RETURN -1;
    END IF;
  CALL DBMS_OUTPUT.PUT_LINE('Opened file: ' || v_filename);
  CALL UTL_FILE.PUT_LINE(v_filehandle,'Some text to write to the file.');
  CALL UTL_FILE.FCLOSE(v_filehandle);
END@

CALL proc1@

此示例生成以下输出。

Opened file: myfile.csv