UTL_FILEパッケージを使ってファイルを作成する際のエラー

このQ&Aのポイント
  • OracleのUTL_FILEパッケージを使用してファイルを作成しようとすると、ネットワークドライブまたは他の端末に書き込む際にエラーが発生する問題が発生しています。
  • UTL_FILE_DIRパラメータに正しい値を設定しても問題が解決せず、エラーメッセージ「User-Defined Exception」が表示されます。
  • この問題を解決するためには、ネットワーク共有フォルダやドライブに対するアクセス権限の設定や、ファイルの書き込み先を正しく指定する必要があります。
回答を見る
  • ベストアンサー

ORACLEのUTL_FILEパッケージについて

皆さん、いつもありがとうございます。 OracleのUTL_FILEパッケージを使ったのですが うまくいきません。 どなたか教えてください。 よろしくお願いします。 目的) UTL_FILEパッケージを使ってファイルを作成したい 出力先はネットワークにある共有フォルダーです。 質問) ファイルの書き込み先をネットワークドライブまたは 他の端末(\\コンピュータ名\共有フォルダー)した時 以下のエラーになります。出力先を自端末にした場合は うまくいきます。ちなみに初期パラには「UTL_FILE_DIR = *」 と記述してOracleの再起動もしております。 エラーメッセージ : User-Defined Exception 以上です。

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

  • ベストアンサー
  • TMINET
  • ベストアンサー率32% (45/140)
回答No.1

記憶違いかも知れませんが、ファイル出力は自サーバにしか出せなかったと思います。 9iは出来るのかな?

oraoraora
質問者

お礼

ありがとうございます。助かりました。 サーバーに出力して、ほかの仕組で移動させることにします。

関連するQ&A

  • UTL_FILEパッケージについて

    UTL_FILEパッケージを使用してPL/SQLよりテキスト出力したいのですが上手くいきません。 まずsysdbaにて「create directory aaa as 'd:\'」にてディレクトリを作成しました。 次に以下のようにプロシージャを作成しました。 create procedure kan_exp( fir IN varchar2, filename IN varchar2) is file UTL_FILE.FILE_TYPE; CURSOR tk01_kan_c IS select aaa,bbb from tableCCC begin file := UTL_FILE.FOPEN(dir, filename, 'w'); UTL_FILE.PUT_LINE(file, 'TEST'); UTL_FILE.NEW_LINE(file); for kanrec in tk01_kan_c loop UTL_FILE.PUT_LINE(file, 'TEST'); end loop; END kan_exp; / それを以下のように呼び出しましたが、 execute kan_exp('UTL_FILE_DIR', 'aaa.csv'); 「ORA-29280:無効なディレクトリパスです。」エラーが発生します。 色々と調べてユーザに権限が必要かと思い、「grant read on directory to User」としましたが、ユーザーまたはロール'User'は存在しませんと出てきます。※もちろんUserは存在します。 なにか足りないものがあるのでしょうか? ご教示いただけますでしょうか?宜しくお願いします。

  • UTL_FILE_DIRについて

    お世話になっております。 PL/SQLのファイル出力を行おうとUTL_FILE_DIRを組んだのですがファイルが更新されません。 エラーも検出されないのでどうしたものかと悩んでおります。 ソースは一番最後に記載します。 現状のやった作業に関しては ・初期化パラメータにUTL_FILE_DIR = * selectで確認済み ・テキストファイルの確認  ソースに記載してる通りの所に存在している。(権限もフルコン) oracleのバージョンは9iです。 よろしくお願いします。 set serveroutput on; DECLARE -- ファイルハンドラ vHandle UTL_FILE.FILE_TYPE;   vDirname      VARCHAR2(250);   vFilename      VARCHAR2(250); vOutput VARCHAR2(32767); error_code       NUMBER(5); error_message VARCHAR2(2048); BEGIN vDirname := 'c:'; vFilename := 'test.txt'; vHandle := UTL_FILE.FOPEN(vDirname, vFilename, 'w'); vOutput := ファイル出力です'; UTL_FILE.PUT_LINE(vHandle, vOutput); UTL_FILE.FCLOSE(vHandle); EXCEPTION WHEN OTHERS THEN error_code := sqlcode; error_message := sqlerrm; dbms_output.put_line('エラーコード:' || error_code); dbms_output.put_line('エラーメッセージ:' || error_message); END; / 上記実行するとエラー無しで正常終了しますがテキストファイルは更新されていません。

  • UTL_FILEエラー?

    Oracle10g(リンクをはっています) Winxp http://oshiete1.goo.ne.jp/kotaeru.php3?q=995849 を参考にして以下のようなプロシージャを作成しました。 CREATE OR REPLACE PROCEDURE test.Test_Convrt IS BEGIN DECLARE c1 number; c2 number; data1 varchar2(100) := null; data2 varchar2(100) := null; File_Handle UTL_FILE.FILE_TYPE; Read_Line VARCHAR2(1023); BEGIN File_Handle := utl_file.fopen('C:\temp', 'test.csv', 'r'); LOOP BEGIN UTL_FILE.GET_LINE(File_Handle, Read_line); -- カンマ位置 c1 := instr(Read_line,',',1,1); c2 := instr(Read_line,',',1,2); -- 列データ data1 := ltrim(substr(Read_line,1 ,c1-1)); data2 := ltrim(substr(Read_line,c1+1,c2-c1-1)); -- update update test.tbl1 set col1= data2 where col1= data1; commit; exception when no_data_found then exit; END; END LOOP; UTL_FILE.FCLOSE(File_Handle); END; END ; コンパイルは通るのですが、いざ実行しようとすると、 行1でエラーが発生しました。 : ORA-29280:invalid directory path ORA-06512 at "SYS.UTL_FILE", line 33 ORA-06512 at "SYS.UTL_FILE", line 436 ORA-06512 at "test.TEST_CONVRT", line 11 ORA-06512 at line 1 と表示されました。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1338675 も見てみたのですが、初心者なので、いまひとつ理解できません。 SYS.UTL_FILEを参照できていないということはなんとなく、わかりました。 どのようにすれば解決できるでしょうか? また、開発初心者なので、参考になるサイトが知りたいです。 どなたか、よろしくお願いします。

  • トリガーにてUTL_FILEパッケージを使用しログ作成を行いたい

    いつもお世話になっております。 Oracle9i+WindowsXPの環境で、以下のようなトリガーをテーブル更新or挿入タイミングで起動させ、更新対象行をログのような形でUTL_FILEパッケージを使用してCSVファイルを作成しようとしておりますが、テーブルを更新してもエラーが発生します。 create or replace procedure kan_proc(aaa in number) is PRAGMA AUTONOMOUS_TRANSACTION; file UTL_FILE.FILE_TYPE; filename varchar2(10); BEGIN filename := 'aaa.csv'; file := UTL_FILE.FOPEN('FILE_PATH', filename, 'w'); UTL_FILE.PUT_LINE(file, aaa); ・ ・ END kan_exp; / create or replace trigger kan_trg after update or insert on t_kan each row aaa number begin if updating then select colA into aaa from t_kan where :new.colA = colA; kan_proc(aaa); else if inserting then ??? end; / エラーNo.はちょっと今はわかりませんが、必要であれば提示させていただきます。 全く自信がないのですが更新時上記のようなSQL文で更新対象行がとれるものなのでしょうか? また、ちょっと別問題ですが、挿入時のコードが思いつきませんが、何か良い方法はありますでしょうか? 申し訳ありませんがどなたかご教授いただけませんでしょうか? 宜しくお願い致します。

  • Oracle10gのUTL_FILEについて

    Win2000 Oracle10gにて、 PL/SQLのUTL_FILEパッケージを使用して、 TEXTファイルを操作しようとしています。 ところが、FOPEN時、 ORA-29280: 無効なディレクトリ・パスです。 となってしまいます。 Oracleのsysユーザにて、 ディレクトリオブジェクトを作成し、 READ,WRITE権限をPUBLICに与えました。 これで出来そうなのですが…。 なぜにできないのでしょうか? どなたか解決方法をご存知ではないですか・

  • ファイルへの書き込みができない

    ファイルへの書き込みができない 実行時エラーは表示されないのですが、ファイルへ出力されません。 コードは以下のようにしています。 よろしくお願いします。 declare FILE_HANDLE utl_file.file_type; STR varchar2(1023); begin -- 書き込みモードでファイルオープン FILE_HANDLE := UTL_FILE.FOPEN('c:\tmp','test.txt','W'); STR := 'test'; -- ファイルへ出力 UTL_FILE.PUT(FILE_HANDLE,STR); -- ファイルのクローズ -- UTL_FILE.FCLOSE(FILE_HANDLE); exception when others then dbms_output.put_line('その他エラー'); end; /

  • UTL_FILE.FCOPYでJPGファイルが、正しく表示されないのですが解決方法はありますか?

    表題とおりの質問ですが、UTL_FILE.FCOPYにてサーバにあるフォルダからフォルダへファイルをコピーするんですが、、 その対象ファイルがJPGファイルとなっていて、 簡易なプロシージャを作成してオブジェクトブラウザーから実行してみたところ、 コピー先フォルダへはJPGファイルが作成されているんですが、ファイルを開いてみると画像が表示されなかったり、 画像が化けていたりと、正しく表示されません。 テキストファイルでやってみたところ正しく表示されるのですが、 JPGファイルは正しく表示されません。 バイナリファイルはやっぱり駄目なんでしょうか? また設計者にJPGファイルが正しく表示されないことを確認してもらったのですが、最悪UTL_FILE.FCOPYにて表示されない 場合には、ログファイルにBATで実行できるようにログをはいてくれと言われたのですが、 初心者のためあまりバッチファイルを作成したことが少なく、どうログをはけばいいのかもわかりませんので、 どのようにログにはけばいいか詳しいかたできたらお願いいたします。 <簡単な仕様> 1.テーブル1から社員番号を取得(全件) 2.サーバ(取得先フォルダ.JPGファイルがあるかないか判別) テーブル1.社員番号 = 取得先.社員番号.jpg (条件) 3.対象ファイルがある場合に、COPY先フォルダへJPGファイルをコピー。 といった簡単な処理なんですが。 バッチファイルでの実行だと、あまり詳しくないので推測ですいません。 フォルダからフォルダへ。フォルダごとコピーできたりすると思うのですが、 今回はテーブル1にある社員のみコピーしたいので、ログファイルには、 COPY e:\test1\社員番号.jpg e:\test2\社員番号.jpg  という具合にテーブル1にある社員分ログを出力すればいいのでしょうか? 長ったらしい文になってしまいましたが、回答よろしくおねがいいたします。

  • oracleのPL/SQLでEXECのエラーの確認

    EXECUTEコマンドのエラーの確認につてい教えてください。 EXECUTEコマンドでutl_fileパッケージをL/SQLを実行しているのですが、 そこで、EXECUTEコマンドのエラー判定をしたいのです。 EXECUTEの実行エラーを取得し判定したい。 エラー判定はできますか。 できるとした場合、エラー時はその時点で終了したい。 どのような書き方になるのですか。 実行したSQLは以下となります。 set serveroutput on exec utl_file.fremove('DATA_PUMP_DIR','hogehoge.txt'); →ここでエアー取得と判定がしたい VARIABLE rtn NUMBER DECLARE BEGIN :rtn := 0; select count(*) from d; EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE(SQLCODE||','||SQLERRM); :rtn := 16; END; / EXIT :rtn oracleは19cです。 よろしくお願いします。

  • PL/SQLの変数内容出力について

    PL/SQLでの開発にあたり、もし良い方法がありましたら教えて下さい。 例外やORACLEエラー発生時、EXCEPTION処理としてUTL_FILEパッケージを使用したログ出力を行っています。 この際に、その処理の中で使用している全ての変数の内容を出力したいのですが、例えばV$テーブル等で、変数の内容を保持しているようなものは無いでしょうか? 一変数ずつ出力していると大変なので、例えばセッション情報を引数にして、そのセッションで使用されている変数内容を全て出力するようなログ関数を作りたいのです。 以上、よろしくお願いします。

  • file:// の書き方について

    共有フォルダ内のファイルをロードしたいのですが、 どのように書くのが正しいのでしょうか。 <script type="text/javascript" src="file://IPアドレス/フォルダ/ファイル名"></script>