2014-09-05 74 views
0

嘗試使用新的PDF圖像更新blob中的現​​有pdf圖像。更新Oracle中的BLOB

使用下面的腳本

create or replace directory BLOBS as 'c:\scripts\blob\'; 

DECLARE 
    v_lob BLOB; 
    l_bfile bfile; 
    amt  NUMBER; 

BEGIN 

l_bfile := bfilename('BLOBS', 'releaseofinformation.pdf'); 

SELECT td.TEMPLATE_IMAGE 
INTO v_lob 
FROM template_definition td 
WHERE td.internal_name='AUTH_FOR_RELE_OF_INFO_FORM' 
FOR UPDATE; 

amt := dbms_lob.getlength(l_bfile); 

dbms_lob.fileopen(l_bfile ,dbms_lob.file_readonly); 
dbms_lob.OPEN(v_lob,dbms_lob.lob_readwrite); 
dbms_lob.loadfromfile(v_lob, l_bfile ,amt); 

dbms_output.put_line('File length is: '||dbms_lob.getlength(l_bfile)); 
dbms_output.put_line('Loaded length is: '||dbms_lob.getlength(v_lob)); 
dbms_lob.close(v_lob); 
dbms_lob.fileclose(l_bfile); 

END; 
/

與文件的目錄是在服務器上爲Oracle使用上。 腳本似乎運行並在輸出中報告新文件的文件長度。當我查詢記錄並在彈出式編輯器中選擇blob時,blob顯示不變。

我試着更新過程,用empty_blob()更新blob,然後只運行腳本到現在有一​​個空的blob。

想法和想法?

謝謝

+0

您是否在會話中執行了腳本,然後在彈出編輯器中查詢blob?或者是同一屆會議? (它可能不是,如果你正在使用例如Toad。) – 2014-09-05 18:23:40

+0

我正在運行一個datafix腳本,它報告過程成功運行並報告文件長度。然後我進入Toad驗證blob更新,但由於列現在是空的,它仍然是空的。 – iowatiger08 2014-09-05 19:09:52

回答

0

我不知道爲什麼,但我不得不手動更新記錄/場EMPTY_BLOB(),提交這一變化,然後我可以用文件圖像更新斑點進行。