3

我必须阅读在数据库上创建的文本文件。我不确定UTL_FILE.FOPEN目录参数的适当路径是什么。我很困惑,因为路径不在我的本地电脑上。

我找到此文件的路径类似于

\\{something here}\winixdb$\{schema here I think}\dev\data

这是我当前的代码。

Declare

f UTL_FILE.FILE_TYPE;
s VARCHAR2(200);

begin

  f:= UTL_FILE.FOPEN({path_here}, 'certs_file.txt', 'R');
  UTL_FILE.GET_LINE(f,s);
  UTL_FILE.FCLOSE(f);
  dbms_output.put_line(s);

end;

现在,如果我把确切的路径放在那里,那将是一个错误:

ORA-2928: Invalid Directory Path

我尝试查看其他资源,但他们谈论的是在您的本地环境中找到的路径。另外,我不太了解数据库中文件的想法。

我想看到这个文件被输出到 DBMS。

4

1 回答 1

3

您必须首先声明要访问的目录{path_here}

CREATE OR REPLACE DIRECTORY  MY_PATH_ON_DBMS as '{path_here}';

(如果它已经存在,你应该找到它select * from dba_directories;

; 确保oracle用户可以在 DBMS 上读取它;

然后在您的代码中按其名称调用它:

Declare
  f UTL_FILE.FILE_TYPE;
  s VARCHAR2(200);
begin
  f:= UTL_FILE.FOPEN('MY_PATH_ON_DBMS', 'certs_file.txt', 'R');
  UTL_FILE.GET_LINE(f,s);
  UTL_FILE.FCLOSE(f);
  dbms_output.put_line(s);
end;
于 2016-07-14T07:09:07.830 回答