2017-03-10 49 views
-1

これはおそらく、単純なものですが、私はとにかくそれを頼む:私は書き込みモード(追加ではない)でファイルをはpopenしたいPLSQL:書き込みモードでファイルを開く

、それは最初から開始します。ファイルが存在しない場合は作成する必要があります。

私はこれを試してみました:

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

私はこのエラーを持っている: "SYS.UTL_FILE" で

ORA-29283無効なファイル操作ORA-06512

TY

答えて

0

はそれを行いますlike:

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 
+0

はい。私はそれを書いたが、私はエラーがある – mlwacosmos

+0

@ mlwacosmos ..更新された投稿を確認してください。 – XING

0

エラーに基づいて、現在のユーザーのディレクトリアクセス許可を確認する必要があります。
GRANT READ/WRITE ON DIRECTORY myDirectory TO yourUser;

更新:あなたは既にデータベース権限を設定している場合は、OSのパーミッションをチェックする必要があります。 OSの権限とすべての親ディレクトリも確認してください。

+0

これまでは正常に行われていましたが、Systems departementで確認しています – mlwacosmos

+0

私は書き込み特権 – mlwacosmos

+0

@ mlwacosmosを持っています。あなたがすべての特権を持っていると確信できるなら、それはうまくいかない理由はありません。 – XING

関連する問題