Как передать значение {Base64 закодированное содержимое} в json объект. файл, который я хочу отправить, имеет тип BLOB-объекта в моей таблице Oracle.
СЛЕДУЮЩИЕ фрагменты моего кода
Cursor csr_con_attach is
select file_name documentName,file_blob ,
to_char(created_date,'DD-MON-YYYY')||'T'||to_char(created_date,'HH24:MI:SS') documentDate
From contact.con_attachments
WHERE con_header_id_fk = 2770;
e.g.
For rec_con_attach in csr_con_attach
Loop
v_obj_build :=
json_object_t
('{'
|| '"documentName"' || ':"' || rec_con_attach.documentName || '",'
|| '"blobData"' || ':"' || rec_con_attach.file-blob ||'",'
|| '"documentNotes"' || ':"' || 'Test' ||'",'
|| '"documentDate"' || ':"' || rec_con_attach.documentDate
||'"'||
'}');
end loop;
Когда я компилирую это, я получаю сообщение об ошибке "неправильный номер или тип аргументов при вызове '|| " , Остальной API, который я вызываю, ожидает {закодированный в Base64 контент} для blobData.
Я также пытался конвертировать BLOB-файл в base64encode (используя процедуру ниже), но затем я получаю синтаксическую ошибку JSONT ORA-06512 sys.JDOM_T
Declare
l_step pls_integer := 22500; -- make sure you set a multiple of 3 not higher than 24573
l_clob clob;
begin
for i in 0 .. trunc((dbms_lob.getlength(i_blob) - 1 )/l_step)
loop
dbms_output.put_line(i);
l_clob := utl_raw.cast_to_varchar2(utl_encode.base64_encode(dbms_lob.substr(i_blob, l_step, i * l_step + 1)));
end loop;
io_clob := l_clob;
end;
Любая помощь будет оценена Спасибо