Thursday, November 30, 2006

 

Convert BLOB to CLOB

Sample to convert BLOB to CLOB.

 function ConvertBlobXMLToClob(pfile documents.name%type) return clob is
type message_type is record (
content blob,
charset varchar2(30),
typ varchar2(20)
);
v_message message_type;
v_content clob;
v_dest_offset number := 1;
v_src_offset number := 1;
v_lang_context number := dbms_lob.default_lang_ctx;
v_warning number;
v_x1 number;
begin
-- preberimo dokument
select t.blob_content, 'UTF8' --t.dad_charset
, t.mime_type
into v_message.content, v_message.charset, v_message.typ
from documents t
where t.name = pfile;

-- to CLOB
dbms_lob.createtemporary(v_content, TRUE);
v_dest_offset := 1;
v_src_offset := 1;
v_lang_context := dbms_lob.default_lang_ctx;
DBMS_LOB.CONVERTTOCLOB(v_content, v_message.content, dbms_lob.getlength
(v_message.content), v_dest_offset, v_src_offset,
nls_charset_id(v_message.charset), v_lang_context, v_warning);

v_x1 := instr(lower(substr(v_content,1,1000)),'encoding="');

if v_x1 > 0 then
v_message.charset := replace(substr(v_content,v_x1+10,instr(lower
(substr(v_content,1,1000)),'"', v_x1+10)-v_x1-10),'-','');

dbms_lob.createtemporary(v_content, TRUE);
v_dest_offset := 1;
v_src_offset := 1;
v_lang_context := dbms_lob.default_lang_ctx;
DBMS_LOB.CONVERTTOCLOB(v_content, v_message.content,
dbms_lob.getlength(v_message.content), v_dest_offset, v_src_offset,
nls_charset_id(v_message.charset), v_lang_context, v_warning);
end if;

return v_content;
end;

Comments: Post a Comment



<< Home

This page is powered by Blogger. Isn't yours?