这可能很简单,但无论如何我都会问:
我想在写入模式(不附加)中打开文件,它从头开始。如果该文件不存在,则应该创建它。
我试过了:
ficErrors := UTL_FILE.FOPEN(myDirectory, errorsFilename, 'W');
我有这个错误:
ORA-29283“SYS.UTL_FILE”无效的文件操作ORA-06512
TY
答案 0 :(得分:0)
这样做:
Declare
fHandle UTL_FILE.FILE_TYPE;
begin
fHandle := UTL_FILE.FOPEN('BDUMP', 'test_file', 'w');
UTL_FILE.PUT_Line(fHandle, 'This is the first line');
UTL_FILE.PUT_Line(fHandle, 'This is the second line');
UTL_FILE.PUT_LINE(fHandle, 'This is the third line');
UTL_FILE.FCLOSE(fHandle);
END;
其中BDUMP
=是我的文件创建目录。它位于安装Oracle的服务器上。
参见演示:
SQL> Declare
fHandle UTL_FILE.FILE_TYPE;
begin
fHandle := UTL_FILE.FOPEN('BDUMP', 'test_file', 'w');
UTL_FILE.PUT_Line(fHandle, 'This is the first line');
UTL_FILE.PUT_Line(fHandle, 'This is the second line');
UTL_FILE.PUT_LINE(fHandle, 'This is the third line');
UTL_FILE.FCLOSE(fHandle);
END;
/
PL/SQL procedure successfully completed.
输出:
unixterminal$ ls -lrt test_file
-rw-r--r-- 1 oracle dba 70 Mar 10 15:21 test_file
注意:
如果oracle OS用户在OS目录中没有相应的privileges
,或者database
中指定的路径与实际路径不匹配,程序将抛出此异常:
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 536
ORA-29283: invalid file operation
答案 1 :(得分:0)
根据您的错误,我认为您应该检查当前用户的目录权限
GRANT READ/WRITE ON DIRECTORY myDirectory TO yourUser;
更新:如果您已设置数据库权限,则需要检查操作系统权限。请检查操作系统权限和所有父目录。