在Oracle中更新BLOB

时间:2014-09-05 17:14:35

标签: sql oracle oracle11g

尝试使用新的PDF图像更新blob中的现​​有pdf图像。

使用下面的脚本

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。

思想和想法?

谢谢

1 个答案:

答案 0 :(得分:0)

我不知道为什么但是我必须手动将记录/字段更新为empty_blob(),提交更改,然后我可以继续使用文件图像更新blob。