Почему DB2 SQLFetch возвращает SQL_NULL_DATA только 32-битного размера даже с 64-битными библиотеками

Я построил свое приложение для Windows с 64-битными библиотеками DB2 9.7 (пробовал также и DB2 10.5). Пример: db2cli64.lib,

я использую SQLBindCol а также SQLFetch последовательность для извлечения данных из базы данных.

SQLBindCol(hStmt,
index,
deftyp,
data,
deflen,
&len_ind_ptr)

................

SQLFetch()

.................

if(len_ind_ptr == SQL_NULL_DATA)

Вышеуказанное условие всегда не выполняется в случае, если извлеченные данные равны NULL.
Тип len_ind_ptr является SQLLEN и во время отладки я мог видеть SQLLEN становится __int64 во время выполнения.

Значение, возвращаемое в эту переменную из SQLFetch имеет 32 бита (в моей 64-битной среде он содержит значение 4294967295, которое не равно -1).

В документации я обнаружил, что указатель len_ind_ptr будет назначен на два дескриптора SQL_DESC_INDICATOR_PTR а также SQL_DESC_OCTET_LENGTH_PTRкогда я использую SQLBindCol,

Если данные NULL, макрос SQL_NULL_DATА будет присвоен SQL_DESC_INDICATOR_PTR, Возможно ли, что это назначение хранит значение только в первых 32 битах? или связывание библиотек неверно, или это действительно ошибка 64-битной библиотеки DB2 в Windows?

Примечание. Такое поведение не наблюдается с драйверами ODBC, используемыми для MS SQL Server.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]