2017-03-10 103 views
-1

這可能是簡單的東西,但我想問也無妨:PLSQL:在寫模式下打開文件

我想popen方法寫模式(未追加)的文件,它從一開始就開始。如果文件不存在,應該創建它。

我嘗試這樣做:

ficErrors := UTL_FILE.FOPEN(myDirectory, errorsFilename, 'W'); 

我有這樣的錯誤:

ORA-29283無效的文件操作ORA-06512的 「SYS.UTL_FILE」

TY

回答

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用戶沒有適當的privileges上的操作系統目錄,或者如果指定的路徑在database與實際路徑不匹配時,程序將拋出此異常:

ORA-29283: invalid file operation 
ORA-06512: at "SYS.UTL_FILE", line 536 
ORA-29283: invalid file operation 
+0

是的。我寫了,但我有錯誤 – mlwacosmos

+0

@mlwacosmos ..檢查更新的帖子。 – XING

0

根據您的錯誤,我認爲您應該檢查您當前用戶的目錄權限。
GRANT READ/WRITE ON DIRECTORY myDirectory TO yourUser;

更新:如果你已經設置數據庫權限,需要檢查OS許可。請檢查操作系統權限和所有父目錄。

+0

它通常已經完成,但我正在與系統部門檢查 – mlwacosmos

+0

我有寫權限 – mlwacosmos

+0

@mlwacosmos。如果你確定你擁有所有的特權,那麼沒有理由不起作用。 – XING

相關問題