這可能是簡單的東西,但我想問也無妨:PLSQL:在寫模式下打開文件
我想popen方法寫模式(未追加)的文件,它從一開始就開始。如果文件不存在,應該創建它。
我嘗試這樣做:
ficErrors := UTL_FILE.FOPEN(myDirectory, errorsFilename, 'W');
我有這樣的錯誤:
ORA-29283無效的文件操作ORA-06512的 「SYS.UTL_FILE」
TY
這可能是簡單的東西,但我想問也無妨:PLSQL:在寫模式下打開文件
我想popen方法寫模式(未追加)的文件,它從一開始就開始。如果文件不存在,應該創建它。
我嘗試這樣做:
ficErrors := UTL_FILE.FOPEN(myDirectory, errorsFilename, 'W');
我有這樣的錯誤:
ORA-29283無效的文件操作ORA-06512的 「SYS.UTL_FILE」
TY
做吧如:
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用戶沒有適當的privileges
上的操作系統目錄,或者如果指定的路徑在database
與實際路徑不匹配時,程序將拋出此異常:
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 536
ORA-29283: invalid file operation
根據您的錯誤,我認爲您應該檢查您當前用戶的目錄權限。
GRANT READ/WRITE ON DIRECTORY myDirectory TO yourUser;
更新:如果你已經設置數據庫權限,需要檢查OS許可。請檢查操作系統權限和所有父目錄。
它通常已經完成,但我正在與系統部門檢查 – mlwacosmos
我有寫權限 – mlwacosmos
@mlwacosmos。如果你確定你擁有所有的特權,那麼沒有理由不起作用。 – XING
是的。我寫了,但我有錯誤 – mlwacosmos
@mlwacosmos ..檢查更新的帖子。 – XING