ORA-28562 усечение ошибки данных в oracle разнородное?
Я создал гетерогенный сервис Oracle для db2, используя DG4ODBC.
попробуйте войти через isql и выберите этот запрос
select *from workorder@maximo
Я получаю в результате установить все данные
но когда я вхожу в систему, используя sqlplus Oracle, я получаю эту ошибку
это мой разнородный инициат
и я пытаюсь использовать HS_FDS_TRACE_LEVEL=DEBUG и получить некоторые столбцы имеют sql_null_value
Это образец журнала отладки:
если какие-либо столбцы имеют нулевое значение, данные не могут быть показаны.
как я могу показать данные, хотя имеют нулевое значение?? Я использую Oracle 12c и db2 10.5
1 ответ
Попробуйте использовать:
HS_FDS_SQLLEN_INTERPRETATION = 32
(Из документов Ocacle) Этот параметр действителен только для 64-разрядных платформ. Стандарт ODBC определяет, что SQLLEN (внутренней конструкции ODBC) является 64-битным на 64-битных платформах, но некоторые менеджеры и драйверы ODBC нарушают это соглашение и реализуют его как 32-битный. Чтобы шлюз мог компенсировать их поведение, необходимо указать HS_FDS_SQLLEN_INTERPRETATION=32, если вы используете эти типы диспетчеров драйверов и драйверов.
Из вашего вопроса неясно, битность клиента db2 odbc или драйвер-менеджер или драйвер использует для этого 32-битную или 64-битную версию. После изменения этого параметра может потребоваться повторная инициализация. След CLI Db2 (Google для инструкций) также может раскрыть это.
Я получил эту ошибку, когда пытался загрузить тип данных TEXT из Postgres в Oracle VARCHAR2(4000), а исходные данные в столбце TEXT были больше 4000 байтов. Одним из доступных обходных путей может быть сопоставление столбца TEXT с переменной VARCHAR2(32767) PL / SQL или, возможно, тип данных LONG, CLOB.