PL / SQL:UTL_FILE.FOPEN这将在客户端或服务器端打开文件

时间:2012-11-27 11:34:32

标签: database oracle file stored-procedures plsql

这个问题是在PL / SQL中执行UTL_FILE.FOPEN命令。

UTL_FILE.FOPEN将在客户端或服务器端打开文件吗?

假设我在我的MACHINE A中运行了一个Oracle客户端10,而我正在连接MACHINE B(即服务器)。

当我通过Java Application在机器A中执行以下存储过程时,

DECLARE
  fileHandler UTL_FILE.FILE_TYPE;
BEGIN
  fileHandler := UTL_FILE.FOPEN('/app/dir', 'test.txt', 'W');
  UTL_FILE.PUTF(fileHandler, 'Writing TO a file\n');
  UTL_FILE.FCLOSE(fileHandler);
END;    
/

问题是目录/app/dir应该在MACHINE A(客户端)或MACHINE B(服务器)

1 个答案:

答案 0 :(得分:3)

utl_file.fopen

只会打开DBA设置的目录中的文件,这些目录位于数据库所在的同一服务器上。 MachineB在你的问题中。和。你无法访问任何你想要的旧目录。

DBA可以通过两种方式控制它 - init.ora参数utl_file_dir或创建目录对象。

要查看utl_file_dir如果您可以选择V $ PARAMETERS,请尝试

select value 
 from v$parameters
where name='utl_file_dir';

要查看可以在pl / sql中访问的目录对象:

SELECT owner, directory_name, directory_path
  FROM all_directories;

这是两个截然不同的事情。 utl_file_dir是一个旧功能,目录对象更新。