A RAW
được giới hạn ở 2000 byte. Nếu dữ liệu của bạn dài hơn, bạn sẽ cần lưu trữ dữ liệu đó trong CLOB
và sau đó chuyển đổi CLOB
tới một BLOB
thật không may, phức tạp hơn một chút rằng string_to_raw
hàm số. Một cái gì đó như thế này sẽ hoạt động giả sử bạn có thể gán toàn bộ chuỗi cho một CLOB
biến sẽ hoạt động miễn là chuỗi có độ dài nhỏ hơn 32676 byte. Nếu dài hơn thế, bạn sẽ cần ghi vào CLOB
thành từng phần và sau đó chuyển đổi thành 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;
/