Режимы работы курсоров
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, курсор не отражает изменения данных.