У меня проблема с запросами к базе данных DB2. Числовые значения для некоторых столбцов возвращаются без знаков после запятой, например. У меня есть поле VPACKSP.VPTARA
, которое содержит вес тары.Числовые значения DB2, указанные без десятичных знаков, связанный сервер в MS SQL
Выполнение запроса, как это
SELECT VPACKSP.VPTARA FROM VPACKSP WHERE VPACKSP.VPTEIL = 123456
возвращает значение 0,000
правильное значение Шоуда быть 0,880
Выполнение запроса, где числовое значение умножают возвращает правильное значение, но кратное время выше
SELECT VPACKSP.VPTARA * 100 FROM VPACKSP WHERE VPACKSP.VPTEIL = 123456
возвращает стоимость
88,000
Запросы запускаются с использованием ODBC 64-разрядного ISeries Access Driver версии 13.00.01.0, установленного на Windows Server. Клиентом, который я использую, является Microsoft SQL Server, где связанный сервер был создан с использованием OLE DB Provider для ODBC.
Фактический запрос выглядит следующим образом:
SELECT
*
FROM OPENQUERY(
[LINKEDSERVERNAME]
,'SELECT VPACKSP.VPTARA FROM VPACKSP WHERE VPACKSP.VPTEIL = 123456'
)
;
Это не происходит для всех числовых столбцов. Я старался отличить до NUMERIC(32,16)
, а также до DECIMAL(10,5)
, а также другие комбинации десятичных знаков, но все результирующие значения являются нулями, работает только умножение. Что может быть неправильным?
SQLBindCol и т.д.? – jarlh
@jarlh Не уверен, что это может помочь. Я напрямую не использую API ODBC. Просто выполнив запросы, как описано (см. Обновление) –
Я нашел это: https://support.microsoft.com/en-us/help/3051993/fix-the-value-of-number-type-is-truncated-when -you-select-data-from-anacle-linked-server-by-using-ole-db-provider, но после установки SQL 2014 SP2 ничего не было изменено –