#oracle12c #clob #ibm-integration-bus
#oracle12c #clob #ibm-integration-bus
Вопрос:
У меня есть приложение IIBv10 (пакет исправлений № 19), которое считывает поле CLOB из базы данных Oracle (v12) и сохраняет в общей CHARACTER
переменной. Я также записываю содержимое переменной в журнал. Обычно это работает отлично, но иногда в некоторых средах я вижу, что текст из переменной отличается от текста базы данных (например, один символ может отличаться). Что может быть причиной этого? Похоже, что он воспроизводится спорадически, как в среде с несколькими экземплярами, так и в среде с одним экземпляром.
Пример кода (MY_TABLE имеет поле CLOB и MY)
DECLARE MY_CACHE SHARED ROW;
DECLARE mySelectStatement CHARACTER 'SELECT * FROM MY_TABLE';
SET MY_CACHE.Item[] = PASSTHRU(mySelectStatement);
Комментарии:
1. Являются ли «разные» символы многобайтовыми и / или специфичными для набора символов, или вы видите это даже с базовыми (т. Е. ASCII) символами? Часть «некоторые среды» предполагает, что, возможно, просто разные настройки локали / набора символов где-то в стеке, но это зависит от того, что именно изменяется.
2. На самом деле я вижу его с помощью символов ASCII, но текст также содержит многобайтовые (кириллические) символы. For instance, <xs:restriction>blablabla КИРИЛЛИЧЕСКИЕ БУКВЫ</xs:restriction> turns into <xs:restrictton>blablabla КИРИЛЛИЧЕСКИЕ БУКВЫ</xs:restriction> (i turns into t in «restriction»)
3. как вы подключаетесь к oracle DB….is это odbc или jdbc? Возможно, вам придется проверить, используется ли UTF-8 в ваших настройках при подключении.
4. Я использую ODBC (который предоставляется IBM), и, похоже, я использую UTF-8, но я проверю, спасибо.