通过utl_file.open打开驻留在服务器上的文件时出错!

时间:2010-12-01 12:15:46

标签: oracle plsql

我正在尝试打开驻留在数据库服务器中的文件, 我用了   选择 *   来自V $ PARAMETER   WHERE NAME ='utl_file_dir' 找出目录路径。

当我执行此代码时,我收到此错误。 错误来了“ORA-29283:无效的文件操作”

declare
    v_file_handler utl_file.file_type;
    p_dir varchar2(100):='/d04/data/edi/inbound';
    v_no  number:=1;
    v_file varchar2(30):='ut_file.txt';
    begin
    if utl_file.is_open(v_file_handler) then 
    dbms_output.put_line('Already opened');
    else
    v_file_handler:= utl_file.fopen(p_dir,v_file,'r');
    utl_file.putf(v_file_handler,'program %s\n',sysdate);
    dbms_output.put_line('not opened');
    end if;
    exception
    when others then
    dbms_output.put_line(sqlerrm);
    end; 

2 个答案:

答案 0 :(得分:1)

v_file_handler:= utl_file.fopen(p_dir,v_file,'r');
utl_file.putf(v_file_handler,'program %s\n',sysdate);

您正在打开一个文件进行阅读并尝试写入该文件。这肯定会抛出 错误。

来自Oracle documentation:

UTL_FILE.FOPEN (
   location     IN VARCHAR2,
   filename     IN VARCHAR2,
   open_mode    IN VARCHAR2,
   max_linesize IN BINARY_INTEGER) 

open_mode Specifies how the file is opened. 
Modes include:  r -- read text

此外,

  

ORA-29283:文件操作无效

     

原因:尝试从不存在的文件或目录中读取,或者操作系统拒绝了文件或目录访问。

     

操作:验证文件系统上的文件和目录访问权限,如果正在读取,请验证该文件是否存在。

答案 1 :(得分:1)