2016-11-07 64 views
0

我想從oracle數據庫中選擇字節並將它們轉換爲圖像文件。當我編寫oracle過程時,它在UTL_FILE.fopen中停止並返回一個ORA-29280錯誤。 Oracle社區表示,這個錯誤是由於操作系統級用戶可能沒有權限寫入文件夾而導致的,或者我們應該使用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安裝在本地機器或你」重新使用遠程數據庫? – Kacper

+0

沒有@Kacper,它沒有安裝在我的機器上 –

回答

0

請在您的數據庫執行:

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過程之前還是在裏面?對不起,我的問題,但我仍然是一個初學者在Oracle –

+0

@ H.Al:從PL/SQL,你不能訪問任何隨機目錄或文件。您只能訪問您已聲明的目錄(「CREATE DIRECTORY XXX AS ...」),並在使用它們之前授予必要的權限。你必須用符號名稱(在上面的例子中是'XXX')來引用它們。否則,你會得到ORA-29280錯誤。 – Codo

+0

@Kacper我現在發現了你的意思your_user和你的代碼應該在我的程序開始後執行,但我不知道它爲什麼會返回一個PLS-00103錯誤,我錯過了什麼? –