这个问题是在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(服务器)
答案 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是一个旧功能,目录对象更新。