在clob字段中存放的都是一些word、excel之类的文件,要转换到blob字段中去。在网上找到一个函数转换成功了,但是转换过的文件打开都是空白,函数如下:
------------------------------------------------------
-- Export file for user HADZJC --
-- Created by Administrator on 2010-09-20, 14:48:52 --
------------------------------------------------------spool Clobתblob.logprompt
prompt Creating function C2B
prompt =====================
prompt
CREATE OR REPLACE FUNCTION C2B (b IN CLOB default empty_clob())
RETURN BLOB
IS
res BLOB;
b_len number := dbms_lob.getlength(b);
dest_offset1 NUMBER := 1;
src_offset1 NUMBER := 1;
amount_c INTEGER := DBMS_LOB.lobmaxsize;
blob_csid NUMBER := DBMS_LOB.default_csid;
lang_ctx INTEGER := DBMS_LOB.default_lang_ctx;
warning INTEGER;
BEGIN
if b_len > 0 then
DBMS_LOB.createtemporary(res, TRUE);
DBMS_LOB.OPEN(res, DBMS_LOB.lob_readwrite);
DBMS_LOB.convertToBlob(res, b, amount_c, dest_offset1, src_offset1, blob_csid, lang_ctx, warning );
else
select empty_blob() into res from dual;
end if;
RETURN res; -- res is OPEN here
END C2B;
/
spool off各位高手帮忙看看啊~!谢谢了
------------------------------------------------------
-- Export file for user HADZJC --
-- Created by Administrator on 2010-09-20, 14:48:52 --
------------------------------------------------------spool Clobתblob.logprompt
prompt Creating function C2B
prompt =====================
prompt
CREATE OR REPLACE FUNCTION C2B (b IN CLOB default empty_clob())
RETURN BLOB
IS
res BLOB;
b_len number := dbms_lob.getlength(b);
dest_offset1 NUMBER := 1;
src_offset1 NUMBER := 1;
amount_c INTEGER := DBMS_LOB.lobmaxsize;
blob_csid NUMBER := DBMS_LOB.default_csid;
lang_ctx INTEGER := DBMS_LOB.default_lang_ctx;
warning INTEGER;
BEGIN
if b_len > 0 then
DBMS_LOB.createtemporary(res, TRUE);
DBMS_LOB.OPEN(res, DBMS_LOB.lob_readwrite);
DBMS_LOB.convertToBlob(res, b, amount_c, dest_offset1, src_offset1, blob_csid, lang_ctx, warning );
else
select empty_blob() into res from dual;
end if;
RETURN res; -- res is OPEN here
END C2B;
/
spool off各位高手帮忙看看啊~!谢谢了
clob存2进制的文件一般会造成文件损坏
对于文本才使用clob