Неправильное значение для поля CLOB / BLOB в наборе записей ADO на границе страницы

У нас есть старое приложение C ++, которое использует ADO (Classic, версия 6.1) для подключения к базам данных Oracle.

Если запрос, используемый для заполнения набора записей (с помощью метода Open), включает в себя объединение, мы сталкиваемся с проблемой при выполнении перемещения к записи только на границе страницы (например, 1000-й записи, когда FetchSize = 1000), и набор записей имеет по крайней мере две полные страницы записей (например, 2000 или более записей).

Проблема заключается в том, что значение поля CLOB или BLOB для этой записи является неправильным. Все остальные поля (разных типов) являются правильными. Однако поле CLOB или BLOB имеет значение записи на одну полную страницу вперед (например, на 1000 записей вперед). (Не уверен, что произойдет, если имеется более одного поля CLOB или BLOB; еще не пробовал, так как это не распространенный вариант использования.)

Если мы сделаем Move для записи 999, а затем перейдем к 1, все хорошо. Кроме того, если вызов Recordset :: Open выполняется с параметром CursorType, установленным в adOpenForwardOnly, и параметром LockType, установленным в adLockReadOnly, ошибка также не видна.

Выполнение чего-либо подобного (или как можно более похожего!) С ADO.NET не показывает такого поведения, но в настоящее время переносить его нецелесообразно.

Кто-нибудь видел что-то подобное или есть идеи, что может быть причиной? Я искал и искал безрезультатно, и сейчас не вижу альтернативы, кроме как просто обойти это.

0

Решение

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

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

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

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