2016-11-07 18 views
0

oracleデータベースからバイトを選択してイメージファイルに変換しようとしています。 Oracleプロシージャを記述すると、UTL_FILE.fopenで停止し、ORA-29280エラーが戻されます。 Oracleコミュニティでは、このエラーはOSレベルのユーザーがフォルダへの書込み権限がないか、upper_casesを使用する必要があるために発生していると言います。しかし、提案1では、.Netを使用して同じフォルダにアクセスしようとしましたが、画像ファイルが正常に作成されました。提案2のために大文字で試しましたが、同じエラーに直面しています。何が問題なの?なぜ私は.NETからファイルを作成できますが、Oracleでは作成できませんか?oracleからファイルを開くことができません

CREATE OR REPLACE PROCEDURE BLOB_UPDATE (file_name in varchar) IS 

    file_ref UTL_FILE.file_type; 
    raw_max_size constant number := 32767; 

begin 

    file_ref := UTL_FILE.fopen('C:\LOB', file_name, 'WB', raw_max_size); 
    -- Here it stops working ! -- 
    .... 
    utl_file.fclose(file_ref); 

END BLOB_UPDATE; 
+0

Oracleがあなたのマシンかにローカルにインストールされている」以下は私のコードですリモートDBを使用していますか? – Kacper

+0

いいえ@Kacper、それは私のマシンにインストールされていません –

答えて

0

あなたのDB上で実行してください:

create or replace directory DIR as 'C:\LOB' 
grant read, write on directory DIR to your_user 

そして、あなたの手順でアクセスディレクトリによって:

file_ref := UTL_FILE.fopen('DIR', file_name, 'WB', raw_max_size); 
+0

申し訳ありませんが、私はyour_userと、上記のコードを追加する必要があることを意味していません。申し訳ありませんが、私はまだOracleの初心者です –

+0

@ H.Al:PL/SQLから、任意のディレクトリやファイルにアクセスすることはできません。あなたはあなたが宣言したディレクトリ( 'CREATE DIRECTORY XXX AS ...')にアクセスし、それらを使う前に必要な権利を与えられます。そして、それらを記号的な名前(上記の場合は 'XXX')で参照する必要があります。そうしないと、ORA-29280エラーが発生します。 – Codo

+0

@Kacperあなたがyour_userを意味していることを今発見しました。コードは自分の手続きの中で実装しなければなりませんが、なぜPLS-00103 oraエラーを返すのか分かりません。 –

関連する問題