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.

Другие вопросы по тегам