RAW
jest ograniczona do 2000 bajtów. Jeśli Twoje dane są dłuższe, musisz je przechowywać w CLOB
a następnie przekonwertuj CLOB
do BLOB
co jest niestety nieco bardziej skomplikowane niż string_to_raw
funkcjonować. Coś takiego będzie działać przy założeniu, że możesz przypisać cały ciąg do CLOB
zmienna, która powinna działać tak długo, jak długość łańcucha jest mniejsza niż 32676 bajtów. Jeśli jest dłuższy, musisz napisać do CLOB
w kawałkach, a następnie przekonwertuj na 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;
/