एक 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;
/