0

大家好你们好。我是 PL/SQL 和 Oracle 数据库的新手。我需要读/写服务器上存在的文件,所以我正在使用utl_file.fopen('/home/tmp/','text.txt','R'),但 Oracle 显示错误“目录路径无效”。

主要问题是我只有用户权限,所以我不能使用类似create directory user_dir as '/home/temp/'或查看 utl_file_dir 之类的命令,只show parameter utl_file_dir; 使用此代码查看 utl_file_dir:

SQL> set serveroutput on;
SQL> Declare
  2      Intval number;
  3      Strval varchar2 (500);
  4      Begin
  5       If (dbms_utility.get_parameter_value('utl_file_dir', intval,strval)=0)
  6      Then dbms_output.put_line('value ='||intval);
  7      Else dbms_output.put_line('value = '||strval);
  8      End if;
  9      End;
 10  /

输出为“值 = 0”。

我用谷歌搜索了很多,但没有找到任何解决这个问题的方法,所以我在这里寻求帮助。

要读取文件,我使用了以下代码:

    declare
    f utl_file.file_type;
    s varchar2(200);
begin
    f := utl_file.fopen('/home/tmp/','text.txt','R');
    loop
        utl_file.get_line(f,s);
        dbms_output.put_line(s);
    end loop;
exception
    when NO_DATA_FOUND then
        utl_file.fclose(f);
end;
4

1 回答 1

2

如果您没有创建目录对象的权限(并假设目录对象不存在),您需要向您的 DBA(或其他具有适当权限的人)发送请求,以便创建一个目录,并授予您对该目录的访问权限。

utl_file_dir是一个过时的参数,它比目录对象灵活得多,并且需要重新启动数据库才能更改 - 除非您使用的是 Oracle 8.1.x 或者您正在处理在 8.1.x 天写回的遗留进程并且尚未更新为使用目录,您应该忽略它。

于 2013-10-08T20:26:00.223 回答