--首先我们创建用于文件操作的目录

SQL> create directory colin_dir as '/opt/oracle/oradata/orcl/colin';
 
Directory created
PS:/opt/oracle/oradata/orcl/colin这个目录必须在服务器上创建
--第二步授予读写权限

SQL> grant read,write on directory colin_dir to dba;
 
Grant succeeded
偶是直接把这个目录的读写权限授给了DBA这个角色,因为我当前的用户就是DBA,也可以通过sys用户直接授予当前用户
[oracle@localhost colin]$ sqlplus /nolog

SQL*Plus: Release 10.2.0.3.0 - Production on Thu Oct 21 17:34:36 2010

Copyright (c) 1982, 2006, Oracle. All Rights Reserved.

SQL> conn /as sysdba
Connected.
SQL> grant read,write on directory COLIN_DIR to gamedata_fs3;

Grant succeeded.
--第三步创建一个简单的写数据到文件excel的过程

create or replace procedure test_uti_file(test_file in varchar2) is
  v_content char(4);
  cursor test_ufile_cur is
    select id || chr(9) || name || chr(9) from uti_file_test;
  l_file utl_file.file_type;
begin
  l_file := utl_file.fopen('COLIN_DIR', test_file, 'w');

  open test_ufile_cur;

  loop
    fetch test_ufile_cur
      into v_content;
    exit when test_ufile_cur %notfound;
    utl_file.put_line(l_file, v_content, false);
  end loop;

  close test_ufile_cur;
  utl_file.fflush(l_file);
  utl_file.fclose(l_file);
end;
PS:上面的COLIN_DIR的目录名必须大写,test_file文件不必事先建立
--第四步测试过程

begin
  -- Call the procedure

  test_uti_file(test_uti_file.xls);
end;
--最后可以到服务器查看生成的test_uti_file.xls文件了


1    a
2    b


01-06 09:34