【发布时间】:2014-08-20 21:39:32
【问题描述】:
我正在尝试查看此文件是否存在。但我收到此错误消息。我已经检查了我获得的特权。但是这个文件在服务器端,所以我错过了什么
DECLARE
vInHandle utl_file.file_type;
BEGIN
vInHandle := utl_file.fopen('IMG_UTL_DIR', 'image-file.csv', 'R');
IF utl_file.is_open(vInHandle) THEN
dbms_output.put_line('The File exists');
Else
dbms_output.put_line('The File not exists');
END IF;
END fopen;
错误:
ORA-29283:文件操作无效
ORA-06512:在“SYS.UTL_FILE”,第 536 行
ORA-29283: 无效的文件操作
ORA-06512: 在第 5 行
【问题讨论】:
-
不,
fopentakes the directory object name as a varchar,所以它应该被引用。该目录对象是否存在,您是否对该对象具有权限,服务器操作系统中是否存在底层目录,Oracle 是否有权访问该目录;该文件是否真的存在?你说你正在测试,但如果没有,那么它会出错。如果允许您以大写形式传递模式,我不记得了 - 文档只显示较低。 -
@AlexPoole - 我的立场是正确的。在我们的商店,DBA 拒绝让我们使用目录对象(“它们是潜在的安全风险”。WTF ?!?!?!?但我该争论谁...... :-/)所以我们仍在开放带有目录路径的文件 - 请不要问我这是如何“更好”或“更安全”的 - 这些事情超出了像我这样的凡人的范围。