Типы курсора (компонент Database Engine)

В ODBC и ADO определены четыре типа курсора, поддерживаемые Microsoft SQL Server. Инструкция DECLARE CURSOR была расширена; таким образом, можно указать четыре типа для курсоров Transact-SQL. Эти курсоры различаются по способности обнаруживать изменения в результирующем наборе и по потребляемым ими ресурсам, например памяти и пространству в базе данных tempdb. Курсор может обнаружить изменения в строках, только предпринимая вторую попытку извлечь эти строки. Для источника данных не существует способа уведомить курсор об изменениях в извлекаемых в настоящий момент строках. На способность курсора обнаруживать изменения также влияет уровень изоляции транзакций.

В SQL Server поддерживаются четыре типа серверных курсоров API, а именно:

  • статические курсоры;

  • динамические курсоры;

  • однонаправленные курсоры;

  • курсоры, управляемые набором ключей.

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

Хотя в моделях курсоров API базы данных однонаправленный курсор рассматривается как отдельный тип курсора, в SQL Server это не так. В SQL Server однонаправленность и прокрутка рассматриваются как параметры, которые могут быть применены к статическим, динамическим и управляемым набором ключей курсорам.