set define off
DECLARE
vb1 CLOB :=
'long text';
vb2 CLOB :=
'long text';
vb3 CLOB :=
'long text';
vb CLOB := vb1||vb2||vb3;
vb_upd BLOB;
FUNCTION convert_clob_to_blob (pclob CLOB) RETURN BLOB
IS
lblob BLOB;
ldest_offset INTEGER := 1;
lsource_offset INTEGER := 1;
llang_context INTEGER := dbms_lob.default_lang_ctx;
lwarning INTEGER := dbms_lob.warn_inconvertible_char;
BEGIN
dbms_lob.createtemporary (lblob, TRUE);
dbms_lob.converttoblob (dest_lob => lblob,
src_clob => pclob,
amount => dbms_lob.lobmaxsize,
dest_offset => ldest_offset,
src_offset => lsource_offset,
blob_csid => dbms_lob.default_csid,
lang_context=> llang_context,
warning => lwarning);
RETURN lblob;
END convert_clob_to_blob;
BEGIN
vb_upd := convert_clob_to_blob(vb);
UPDATE tab SET BLOB_COL = vb_upd
WHERE ...;
COMMIT;
END;
/
DECLARE
vb1 CLOB :=
'long text';
vb2 CLOB :=
'long text';
vb3 CLOB :=
'long text';
vb CLOB := vb1||vb2||vb3;
vb_upd BLOB;
FUNCTION convert_clob_to_blob (pclob CLOB) RETURN BLOB
IS
lblob BLOB;
ldest_offset INTEGER := 1;
lsource_offset INTEGER := 1;
llang_context INTEGER := dbms_lob.default_lang_ctx;
lwarning INTEGER := dbms_lob.warn_inconvertible_char;
BEGIN
dbms_lob.createtemporary (lblob, TRUE);
dbms_lob.converttoblob (dest_lob => lblob,
src_clob => pclob,
amount => dbms_lob.lobmaxsize,
dest_offset => ldest_offset,
src_offset => lsource_offset,
blob_csid => dbms_lob.default_csid,
lang_context=> llang_context,
warning => lwarning);
RETURN lblob;
END convert_clob_to_blob;
BEGIN
vb_upd := convert_clob_to_blob(vb);
UPDATE tab SET BLOB_COL = vb_upd
WHERE ...;
COMMIT;
END;
/