передавая сабл JSon_object_t - PullRequest
       32

передавая сабл JSon_object_t

0 голосов
/ 26 февраля 2020

Как передать значение {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;

Любая помощь будет оценена Спасибо

...