Я использую node.js, oracle и oracledb module. Также у меня есть простая процедура PL / SQL, как это
procedure mock_lobs(
P_CLOB IN OUT CLOB,
P_BLOB IN OUT BLOB
)
AS
BEGIN
NULL;
END mock_lobs;
Возвращает именно то, что было передано.
Затем я создаю временный объект CLOB, используя API clob = connection.createLob(oracledb.CLOB)
и заполнить его некоторыми кусочками строки Unicode (несколько итераций), как это clob.write(chunk)
После того, как clob передается на выполнение процедуры, я получаю результирующий объект CLOB и пытаюсь прочитать его. Я вижу, что мои куски были написаны с дополнительными пробелами после каждого. Когда я пишу строку типа "abcЩ"
длиной 4 символа, она записывается как "abcЩ "
(хвостовые пробелы для каждого символа, не входящего в ASCII). Другими словами, размер записанного фрагмента равен количеству байтов, которое занимает исходная строка.
Я пытался указать utf8
кодировку для clob следующим образом: clob.setEncoding('utf8')
и даже при записи clob.write(chunk, 'utf8')
, но результат всегда одинаков.
В чем причина проблемы? Чего мне не хватает?