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


Режимы работы курсоров

ODBC поддерживает параметры ISO, предназначенные для указания поведения курсоров, задавая их прокручиваемость и чувствительность. Это поведение определяется путем установки параметров SQL_ATTR_CURSOR_SCROLLABLE и SQL_ATTR_CURSOR_SENSITIVITY при вызове SQLSetStmtAttr. Драйвер ODBC SQL Server Native Client реализует эти параметры, запрашивая серверные курсоры со следующими характеристиками.

Параметры режима работы курсоров Запрошенные характеристики серверного курсора
SQL_SCROLLABLE и SQL_SENSITIVE Курсор, управляемый набором ключей, и основанный на версии оптимистический параллелизм
SQL_SCROLLABLE и SQL_INSENSITIVE Статический курсор и параллелизм в режиме «только чтение»
SQL_SCROLLABLE и SQL_UNSPECIFIED Статический курсор и параллелизм в режиме «только чтение»
SQL_NONSCROLLABLE и SQL_SENSITIVE Однопроходный курсор и основанный на версии оптимистический параллелизм
SQL_NONSCROLLABLE и SQL_INSENSITIVE Результирующий набор по умолчанию (последовательный доступ, только чтение)
SQL_NONSCROLLABLE и SQL_UNSPECIFIED Результирующий набор по умолчанию (последовательный доступ, только чтение)

Для оптимистического параллелизма на основе версий требуется столбец метки времени в базовой таблице. Если управление оптимистическим параллелизмом на основе версий запрашивается в таблице, которая не содержит столбец метки времени , сервер использует оптимистичный параллелизм на основе значений.

Прокручиваемость

Если SQL_ATTR_CURSOR_SCROLLABLE задано значение SQL_SCROLLABLE, курсор поддерживает все различные значения для параметра FetchOrientationsqlFetchScroll. Если для SQL_ATTR_CURSOR_SCROLLABLE задано значение SQL_NONSCROLLABLE, курсор поддерживает только значение FetchOrientation , равное SQL_FETCH_NEXT.

Чувствительность

Если параметр SQL_ATTR_CURSOR_SENSITIVITY имеет значение SQL_SENSITIVE, курсор отражает изменения данных, произведенные текущим пользователем или зафиксированные другими пользователями. Если параметр SQL_ATTR_CURSOR_SENSITIVITY имеет значение SQL_INSENSITIVE, курсор не отражает изменения данных.

См. также:

Использование курсоров (ODBC)