Поделиться через


SQLSetPos (библиотека курсоров)

Внимание

Эта функция будет удалена в будущей версии Windows. Избегайте использования этой функции в новых рабочих областях разработки и планируете изменять приложения, которые в настоящее время используют эту функцию. Корпорация Майкрософт рекомендует использовать функции курсора драйвера.

В этом разделе рассматривается использование функции SQLSetPos в библиотеке курсоров. Общие сведения о SQLSetPos см. в разделе "Функция SQLSetPos".

Библиотека курсоров поддерживает операцию SQL_POSITION только для аргумента операции в SQLSetPos. Он поддерживает значение SQL_LOCK_NO_CHANGE только для аргумента LockType .

Если драйвер не поддерживает массовые операции, библиотека курсоров возвращает SQLSTATE HYC00 (драйвер не поддерживается) при вызове SQLSetPos с rowNumber равным 0. Это поведение драйвера не рекомендуется.

Библиотека курсоров не поддерживает операции SQL_UPDATE и SQL_DELETE в вызове SQLSetPos. Библиотека курсоров реализует позиционированные инструкции обновления или удаления SQL путем создания инструкции поиска по обновлению или удалению с предложением WHERE, которое перечисляет значения, хранящиеся в кэше для каждого связанного столбца. Дополнительные сведения см. в разделе "Обработка позиционированных обновлений и удаления инструкций".

Если драйвер не поддерживает статические курсоры, приложение, работающее с библиотекой курсоров, должно вызывать SQLSetPos только в наборе строк, извлекаемом SQLExtendedFetch или SQLFetchScroll, а не SQLFetch. Библиотека курсоров реализует SQLExtendedFetch и SQLFetchScroll , выполняя повторяющиеся вызовы SQLFetch (с размером набора строк 1) в драйвере. С другой стороны, библиотека курсоров передает вызовы в SQLFetch, с другой стороны, через драйвер. Если SQLSetPos вызывается в наборе строк, извлекаемом с помощью SQLFetch , если драйвер не поддерживает статические курсоры, вызов завершится ошибкой, так как SQLSetPos не работает с курсорами только для пересылки. Это произойдет, даже если приложение успешно назвало SQLSetStmtAttr для задания SQL_ATTR_CURSOR_TYPE SQL_CURSOR_STATIC, которое поддерживает библиотека курсоров, даже если драйвер не поддерживает статические курсоры.