2017-10-24 31 views
0

私はファイルを作成/開くためにこのコードを使用しています:もし存在しない場合は作成してください。UTL_FILE:新しいファイルを作成できませんでした

w_file_handle := utl_file.fopen ('SAUV_DIR', 
           'sauv_tab_tbrcs_params.txt' , 
           'W') ; 

ファイルはまだ存在しませんが、作成できませんでした。

私は、このエラーました:まだ存在しない場合は、ファイルを作成するために

SQL> @MyScript.sql 
declare 
* 
ERROR at line 1: 
ORA-29283: invalid file operation 
ORA-06512: at "SYS.UTL_FILE", line 536 
ORA-29283: invalid file operation 
ORA-06512: at line 14 

任意のアイデア?

答えて

1

このコードを参照すると、ディレクトリにファイルを作成できます。

以下のコードを使用してtt.sqlファイルを作成しました。私は作業ディレクトリ 'BDUMP`を持っていることを確認しました。

Directoryチェック:

SQL> SELECT DIRECTORY_NAME , DIRECTORY_PATH FROM DBA_DIRECTORIES WHERE DIRECTORY_NAME = 'BDUMP'; 

DIRECTORY_NAME     DIRECTORY_PATH 
------------------------------ --------------- 
BDUMP       /home/fil_test/ 

ディレクトリを変更許可。デフォルトでは、他人に対しては読み取りと実行の許可のみが与えられます。

terminal$ chmod 777 fil_test 

ブロック:

DECLARE 
    fHandle UTL_FILE.FILE_TYPE; 
BEGIN 
    fHandle := UTL_FILE.FOPEN ('BDUMP', 'test_file', 'w'); 

    UTL_FILE.PUT (fHandle, 'This is the first line'); 
    UTL_FILE.PUT (fHandle, 'This is the second line'); 
    UTL_FILE.PUT_LINE (fHandle, 'This is the third line'); 

    UTL_FILE.FCLOSE (fHandle); 
EXCEPTION 
    WHEN OTHERS 
    THEN 
     DBMS_OUTPUT.PUT_LINE (
     'Exception: SQLCODE=' || SQLCODE || ' SQLERRM=' || SQLERRM); 
     RAISE; 
END; 
/

実行:

​​

と私が作成したファイルを参照してください:

私は によって実行
terminal$ ls -lrt test_file* 
-rw-r----- 1 oracle dba   68 Oct 24 14:49 test_file 
+0

'( Read_Writ_fileを開始します)。 end; ' 同じエラーが発生しました: 29283. 00000 - "無効なファイル操作" *原因:ファイルまたはディレクトリから、 が存在しないか、またはファイルまたはディレクトリへのアクセスが拒否されました オペレーティングシステム *処置:ファイル・システム上のファイルおよびディレクトリのアクセス権が であることを確認し、読み込んだ場合はファイルが存在することを確認してください。 –

+0

...しかし、ディレクトリに手動でファイルを作成すると成功しました。 私はそれがステートメントによって作成されることを望みます。 –

+0

@ O.Samそれはあなたの場合にディレクトリが存在しないことを意味します。ディレクトリが存在するかどうか確認してください。更新された投稿を読む。また、あなたのディレクトリに許可 '777'を与える – XING

関連する問題