A RAW
е ограничен до 2000 байта. Ако данните ви са по-дълги от това, ще трябва да ги съхранявате в CLOB
и след това конвертирайте CLOB
към BLOB
което, за съжаление, е малко по-сложно от string_to_raw
функция. Нещо подобно ще работи, ако приемем, че можете да присвоите целия низ към CLOB
променлива, която трябва да работи, докато низът е по-малък от 32676 байта. Ако е по-дълго от това, ще трябва да пишете в CLOB
на парчета и след това конвертирайте в 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;
/