En RAW
er begrænset til 2000 bytes. Hvis dine data er længere end det, skal du gemme dem i en CLOB
og konverter derefter CLOB
til en BLOB
hvilket desværre er lidt mere kompliceret end string_to_raw
fungere. Noget som dette vil fungere, forudsat at du kan tildele hele strengen til en CLOB
variabel, som skal fungere, så længe strengen er mindre end 32676 bytes lang. Hvis det er længere end det, skal du skrive til CLOB
i stykker og konverter derefter til en 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;
/