Segue função que converte um Blob para Clob.
CREATE OR REPLACE FUNCTION func_converte_blob_clob
— procedimento que converte um campo blob para clob
(p_blob in blob)
return clob
as
v_blob BLOB;
v_clob CLOB;
dest_offset NUMBER := 1;
src_offset NUMBER := 1;
amount INTEGER := dbms_lob.lobmaxsize;
blob_csid NUMBER := dbms_lob.default_csid;
lang_ctx INTEGER := dbms_lob.default_lang_ctx;
warning INTEGER;
begin
DBMS_LOB.CREATETEMPORARY(lob_loc=>v_blob, cache=>TRUE, dur=>dbms_lob.SESSION);
DBMS_LOB.CREATETEMPORARY(lob_loc=>v_clob, cache=>TRUE, dur=>dbms_lob.SESSION);
V_BLOB:= P_BLOB;
DBMS_LOB.CONVERTTOCLOB(v_clob,v_blob,amount,dest_offset,src_offset,blob_csid,lang_ctx,warning);
— insert numa tabela que tenha um campo xmltype
RETURN V_CLOB;
END;