UTL_FILE 实现PL/SQL文件的读写操作。可以对位于服务器上的操作系统文件进行读写或写入操作。为了安全
问题,该表限制了访问的目录和文件。只能访问init.ora中指定的目录UTL_FILE_DIR。
如果此参数为*则标识任何目录皆可用。
子程序:
FOPEN 打开一个文件。文件必须在指定目录中。必须已经存在,不能有FOPEN创建。
也不能指定文件最大行大小的参数。大多数系统默认是1023。最多同时打开50个文件。
函数原型:UTL_FILE.FOPEN (
location IN VARCHAR2, 文件目录
filename IN VARCHAR2, 文件名
open_mode IN VARCHAR2) 打开模式
RETURN UTL_FILE.FILE_TYPE; 返回的文件句柄。
IS_OPEN 测试一个文件句柄是否标识一个打开的文件。仅仅是测试是否描述一个打开的文件。
并不能保证在读写文件时没有操作系统错误。
函数原型:UTL_FILE.IS_OPEN (
file IN FILE_TYPE) 文件句柄。
RETURN BOOLEAN;
FCLOSE 关闭句柄标识的文件。如果关闭时仍然有缓冲数据要写入文件,那么会抛出写异常。
函数原型:UTL_FILE.FCLOSE (
file IN OUT FILE_TYPE);
FCLOSE_ALL 关闭会话中所有打开的文件句柄。应该只被运用于紧急情况,例如例外处理中。
函数原型:UTL_FILE.FCLOSE_ALL;
GET_LINE 从文件中取出一行文本并送往输出缓冲参数。
函数原型:UTL_FILE.GET_LINE (
file IN FILE_TYPE,
buffer OUT VARCHAR2);
PUT 把字符串从缓冲区写到文件。必须写方式打开文件。不能写入回车符,需要的话调用
NEW_LINE结束一行,或者使用PUT_LINE写入带有回车符的一整行。
函数原型:UTL_FILE.PUT (
file IN FILE_TYPE,
buffer IN VARCHAR2);
NEW_LINE 写入一个或多个回车符。
函数原型:UTL_FILE.NEW_LINE (
file IN FILE_TYPE,
lines IN NATURAL := 1); 回车符的个数。
PUT_LINE 将文本串从缓冲区写到文件。必须写模式打开。写入带有换行符的一整行。
函数原型:UTL_FILE.PUT_LINE (
file IN FILE_TYPE,
buffer IN VARCHAR2);
PUTF 提供了一种格式化的PUT函数。有两个参数:%S和\N
%S 用指定次序的参数值替代。
\n 换行符。可以自动用适合所在平台格式的换行符替代。
函数原型:UTL_FILE.PUTF (
file IN FILE_TYPE,
format IN VARCHAR2, 包含%S和\N的格式化文本。
[arg1 IN VARCHAR2 DEFAULT NULL,参数序列。
. . .
arg5 IN VARCHAR2 DEFAULT NULL]);
FFLUSH 强制把缓冲区的数据写入文件。通常用在马上要读文件的情况。
函数原型:UTL_FILE.FFLUSH (
file IN FILE_TYPE);
invalid_maxlinesize EXCEPTION;

解决方案 »

  1.   

    是文件上传,不是文件读入数据。
    http://otn.oracle.com/sample_code/products/forms/6idemos.html
      

  2.   

    create or replace procedure test as 
    f UTL_FILE.file_type; 
    s varchar2(200); 
    a varchar2(200); 
    path varchar2(50); 
    begin 
    path:='c:'; 
    f:=utl_file.fopen('c:','aa.CSV','R'); 
    loop 
    utl_file.get_line(f,s); 
    N:=INSTR(S,',',1,1); 
    a := substr(s,.....) 
    select count(*) into i from aa where aa = a; 
    if i > 0 then 
    update .... set ... 
    else 
    insert into ..... 
    end if; 
    end loop; 
    utl_file.fclose(f); 
    COMMIT; 
    EXCEPTION 
    when NO_DATA_FOUND then 
    utl_file.fclose(f); 
    rollback; 
    end; 
    /