プロが教える店舗&オフィスのセキュリティ対策術

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

実行時エラーは表示されないのですが、ファイルへ出力されません。
コードは以下のようにしています。
よろしくお願いします。


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;
/

A 回答 (6件)

以下の点で、不備がある可能性がありますね。


・Oracleの初期化パラメータ
・ディレクトリの権限
参考URLを参考に試してみることをオススメします。

参考になれば幸いです。

参考URL:http://www.shift-the-oracle.com/plsql/utl_file/u …
    • good
    • 0
この回答へのお礼

回答ありがとうございます。


紹介サイトを参考に以下の2点を試してみました。

1、すべてのユーザーへの権限の付与

2、ALTER SYSTEM SET
UTL_FILE_DIR='c:\test'
SCOPE = SPFILE ;

再度、質問内容の処理を実行したら

行1でエラーが発生しました。:
ORA-29280: 無効なディレクトリ・パスです。
ORA-06512: "SYS.UTL_FILE", 行33
ORA-06512: "SYS.UTL_FILE", 行436
ORA-06512: 行7

と出てしまいました。

お礼日時:2010/10/13 23:00

UTL_FILE_DIRを使う方法と、CREATE DIRECTORYをする方法を混同されているようですね。


提示された参考ページはきちんと読んだのでしょうか?
まずはそのとおりにやってみてから、自分のやりたいことに応用していけばいいのでは。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

根本的な理解の仕方が違っていたようです。
解決しました。

お礼日時:2010/10/14 12:50

init.oraの場所はここに記述があります。



http://otndnld.oracle.co.jp/document/products/or …
    • good
    • 0
この回答へのお礼

何度もありがとうございます。

お礼日時:2010/10/14 12:49

> create directory test as 'c:\test'


> と実行してみましたがうまくいきません。

最初の投稿には、
FILE_HANDLE := UTL_FILE.FOPEN('c:\tmp','test.txt','W');
とありますが、
create directory test as 'c:\tmp'
ではないのですか?

さらに、権限の設定も必要です。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。


オラクルは初めてなので、正直それらしきことは片っ端から試しているような状況です。なので、いまいちよくわかってないです。

権限については、初期化パラメータ UTL_FILE_DIRに設定したディレクトリにしか読み書きできないということと同じでいいのでしょうか?

お礼日時:2010/10/14 01:44

init.oraに


UTL_FILE_DIR=C:\tmp
と記述してますか?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

オラクルのバージョンは10gなのですが、init.oraはどこに配置されているのでしょうか?

お礼日時:2010/10/13 23:06

Oracleのバージョンが書いていないのですが、9i以上ならCREATE DIRECTORYをするべきです。


#1さんのURLと併せてご覧ください。

参考URL:http://www.shift-the-oracle.com/plsql/utl_file/c …
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

オラクルのバージョンは10gです。
create directory test as 'c:\test'
と実行してみましたがうまくいきません。

お礼日時:2010/10/13 23:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す