Ein RAW
ist auf 2000 Bytes begrenzt. Wenn Ihre Daten länger sind, müssen Sie sie in einem CLOB
speichern und konvertieren Sie dann den CLOB
zu einem BLOB
was leider etwas komplizierter ist als string_to_raw
Funktion. So etwas funktioniert, vorausgesetzt, Sie können die gesamte Zeichenfolge einem CLOB
zuweisen Variable, die funktionieren sollte, solange die Zeichenfolge weniger als 32676 Bytes lang ist. Wenn es länger ist, müssen Sie in das CLOB
schreiben zerstückeln und dann in ein BLOB
umwandeln .
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;
/