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

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を参照できていないということはなんとなく、わかりました。

どのようにすれば解決できるでしょうか?
また、開発初心者なので、参考になるサイトが知りたいです。
どなたか、よろしくお願いします。

A 回答 (1件)

10g なら絶対パスでのファイルアクセスは止めた方がよいですよ


参考のサイトにディレクトリと絶対パスの両方のファイルアクセスのサンプルがあります。

UTL_FILE パッケージにアクセスできていますので
ORA-29280:invalid directory path
が直接の原因です。サーバ初期化パラメータ(SPFILE)の未設定によるものでしょう

参考URL:http://biz.rivus.jp/technote507106.html
    • good
    • 0
この回答へのお礼

参考URLを見させていただいて、その後もいろいろ調べてみたところ、ようやく理解することができました。
本当にありがとうございました。
パラメータを変更することが、仕様的に許可されないようなので、別の方向からアプローチしたいと思います。

本当に感謝しております。ありがとうございました。

お礼日時:2006/02/02 00:02

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

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