Een RAW
is beperkt tot 2000 bytes. Als uw gegevens langer zijn, moet u deze opslaan in een CLOB
en converteer vervolgens de CLOB
naar een BLOB
wat helaas een beetje ingewikkelder is dan de string_to_raw
functie. Zoiets als dit zal werken, ervan uitgaande dat je de hele string kunt toewijzen aan een CLOB
variabele die zou moeten werken zolang de string minder dan 32676 bytes lang is. Als het langer is, moet je schrijven naar de CLOB
in stukjes en converteer dan naar een BLOB
.
declare
l_blob blob;
l_clob clob := rpad('{"foo": {"id": "1", "value": "2", "name": "bob"}}',3200,'*');
l_amt integer := dbms_lob.lobmaxsize;
l_dest_offset integer := 1;
l_src_offset integer := 1;
l_csid integer := dbms_lob.default_csid;
l_ctx integer := dbms_lob.default_lang_ctx;
l_warn integer;
begin
dbms_lob.createTemporary( l_blob, false );
dbms_lob.convertToBlob( l_blob,
l_clob,
l_amt,
l_dest_offset,
l_src_offset,
l_csid,
l_ctx,
l_warn );
update json_data
set data = l_blob;
end;
/