Режимы работы курсоров
ODBC поддерживает параметры ISO, предназначенные для указания поведения курсоров, задавая их прокручиваемость и чувствительность. Это поведение устанавливается в вызове путем присвоения параметрам SQL_ATTR_CURSOR_SCROLLABLE и SQL_ATTR_CURSOR_SENSITIVITY значения SQLSetStmtAttr. Драйвер ODBC для собственного клиента SQL Server реализует эти параметры, запрашивая серверные курсоры со следующими характеристиками.
Параметры режима работы курсоров |
Запрошенные характеристики серверного курсора |
---|---|
SQL_SCROLLABLE и SQL_SENSITIVE |
Курсор, управляемый набором ключей, и основанный на версии оптимистический параллелизм |
SQL_SCROLLABLE и SQL_INSENSITIVE |
Статический курсор и параллелизм в режиме «только чтение» |
SQL_SCROLLABLE и SQL_UNSPECIFIED |
Статический курсор и параллелизм в режиме «только чтение» |
SQL_NONSCROLLABLE и SQL_SENSITIVE |
Однопроходный курсор и основанный на версии оптимистический параллелизм |
SQL_NONSCROLLABLE и SQL_INSENSITIVE |
Результирующий набор по умолчанию (последовательный доступ, только чтение) |
SQL_NONSCROLLABLE и SQL_UNSPECIFIED |
Результирующий набор по умолчанию (последовательный доступ, только чтение) |
Основанный на версии оптимистический параллелизм требует столбец отметки времени в базовой таблице. Если для таблицы, не содержащей столбца timestamp, запрашивается управление основанным на версии оптимистическим параллелизмом, сервер использует оптимистический параллелизм, основанный на значениях.
Прокручиваемость
Если параметр SQL_ATTR_CURSOR_SCROLLABLE имеет значение SQL_SCROLLABLE, курсор поддерживает все различные значения параметра FetchOrientation объекта SQLFetchScroll. Если параметр SQL_ATTR_CURSOR_SCROLLABLE имеет значение SQL_NONSCROLLABLE, курсор поддерживает только значение FetchOrientation для SQL_FETCH_NEXT.
Чувствительность
Если параметр SQL_ATTR_CURSOR_SENSITIVITY имеет значение SQL_SENSITIVE, курсор отражает изменения данных, произведенные текущим пользователем или зафиксированные другими пользователями. Если параметр SQL_ATTR_CURSOR_SENSITIVITY имеет значение SQL_INSENSITIVE, курсор не отражает изменения данных.