• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:UTL_FILEパッケージについて)

UTL_FILEパッケージでテキスト出力する方法とエラー対処法

このQ&Aのポイント
  • UTL_FILEパッケージを使用してPL/SQLからテキストを出力する方法について説明します。まずはディレクトリを作成し、そのディレクトリにテキストファイルを作成します。次に、UTL_FILEパッケージを使用してテキストを書き込む手順を示します。しかし、エラー「ORA-29280:無効なディレクトリパスです。」が発生する場合があります。この場合、ディレクトリの権限やユーザーの存在を確認してください。
  • UTL_FILEパッケージを使用してテキストファイルを出力する方法について説明します。まずはディレクトリを作成し、そのディレクトリにテキストファイルを作成します。次に、UTL_FILEパッケージのFOPEN関数を使用してファイルを開き、UTL_FILEパッケージのPUT_LINE関数を使用してテキストを書き込みます。しかし、エラー「ORA-29280:無効なディレクトリパスです。」が発生する場合があります。この場合、ディレクトリの権限やユーザーの存在を確認してください。
  • UTL_FILEパッケージを使用してPL/SQLからテキスト出力する方法について説明します。まずはディレクトリを作成し、そのディレクトリにテキストファイルを作成します。次に、UTL_FILEパッケージを使用してテキストを書き込む手順を示します。しかし、エラー「ORA-29280:無効なディレクトリパスです。」が発生する場合があります。この場合、ディレクトリの権限やユーザーの存在を確認してください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

本当にそういうコードなのか、転記ミスなのか良くわからないので 勝手に判断することを許してください。 >まずsysdbaにて「create directory aaa as 'd:\'」にてディレクトリを作成しました。 「sysdbaで」を「sysユーザで」と解釈します。 sysでディレクトリオブジェクトを作って、他のユーザが そのディレクトリオブジェクトを使ってファイルに書き出す場合、 そのユーザに対しwrite権限が必要になります。 >create procedure kan_exp( >fir IN varchar2, filename IN varchar2) is kan_expの第一パラメータ名は「dir」?だとすると >execute kan_exp('UTL_FILE_DIR', 'aaa.csv'); この第一パラメータの値は'aaa'だと思います。 >「grant read on directory to User」としましたが オブジェクト名が抜けているようですよ。 grant write on directory aaa to User; のようになります。

ryozyryozy
質問者

お礼

大変申し訳ないです。 転記ミスもありました。 その後パブリックにreadとwrite権限追加できましたが、systemではall_directoriesに入っていることを確認しましたがuserには何も入ってきておりません。それが問題だと思うのですが如何でしょうか?

その他の回答 (1)

回答No.2

> systemではall_directoriesに入っていることを確認しましたが > userには何も入ってきておりません。 > それが問題だと思うのですが如何でしょうか? ディレクトリオブジェクトは、たとえユーザでCREATE DIRECTORYを 実行したとしてもユーザの所有物にはならないようです。 #私の環境だとSYSの所有物になりました。

ryozyryozy
質問者

お礼

そのようですね。 ファイルへのアクセス権限が無いような感じです。 また何か情報ありましたらご提供お願いします。

関連するQ&A