问题描述:项目中某字段为BLOB类型,需要将另一个项目上的CLOB字段导入,直接进行导入由于字段类型不同会提示错误,因此需要将CLOB字段转BLOB字段后再导入
处理方法:创建一个CLOB转BLOB的函数
CREATE OR REPLACE FUNCTION C2B(b IN CLOB default empty_clob()) RETURN BLOB
-- typecasts BLOB to CLOB (binary conversion)
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;
创建完成后对字段进行处理 update BLOB字段=C2B(CLOB字段)即可完成更新操作