У моделях курсорів API бази даних однонаправлений курсор сприймається як окремий тип курсора

У SQL Server односпрямованість та прокручування розглядаються як параметри, які можуть бути застосовані до статичних, динамічних та керованих набором ключів курсорів.

Обидва ці способи (Transact-SQL і API-функції курсорів бази даних) ніколи не повинні використовуватися в додатку одночасно.

Додаток, що застосовує API-інтерфейс для визначення режиму роботи курсорів, не може виконати інструкцію Transact-SQL DECLARE CURSOR для запиту нового курсору Transact-SQL. Інструкція DECLARE CURSOR може використовуватися лише в тому випадку, якщо всі атрибути API-курсорів будуть встановлені за умовчанням.

Якщо не було запитано ні Transact-SQL, ні API-курсор, SQL Server повністю повертає за замовчуванням результуючий набір додатку (це називається результуючим набором за умовчанням).

Для всіх курсорів SQL Server використовується однаковий цикл обробки.

2. Виконайте інструкцію Transact-SQL для заповнення курсору. Відкриття курсору, тобто. наповнення його даними, які зберігаються у багаторівневій пам'яті.

3. Отримати курсор необхідні рядки. Операція отримання курсором однієї і більше рядків називається вибіркою. Виконання серії вибірок для отримання рядків у прямому або зворотному напрямку називається прокручуванням.

4. При необхідності виконати операції зміни (оновлення чи видалення) рядка у поточній позиції курсору.

5. Закрити курсор (після чого він стає недоступним для програм користувача).

6. Звільнення курсору, тобто. видалення курсору як об'єкта, оскільки його закриття необов'язково звільняє асоційовану з ним пам'ять

Зазначені етапиобробки реалізуються такими операторами:

ІнструкціяOPEN заповнює результуючий набір.

ОператорFETCH повертає з нього рядок (3 та 4 етапи).

ІнструкціяCLOSE очищає поточний набір, пов'язаний з курсором.

ІнструкціяDEALLOCATE звільняє ресурси, що використовуються курсором.

Інструкцію DECLARE CURSOR було розширено; Таким чином, можна вказати чотири типи курсорів Transact-SQL. Ці курсори розрізняються за здатністю виявляти зміни в результуючому наборі і за ресурсами, що споживаються ними, наприклад пам'яті і простору в базі даних tempdb.

Синтаксис

SQL 92 Syntax для встановлення параметрів роботи курсору.

DECLAREcursor_name[ INSENSITIVE ] [ SCROLL ] CURSOR

Transact-SQL Extended Syntax використовує розширення мови Transact-SQL, що дозволяють визначати курсори за допомогою таких же типів, як типи, що використовуються в курсорних функціях API баз даних, таких як ODBC та ADO.

DECLAREcursor_nameCURSOR [ LOCAL GLOBAL ]

[ STATIC KEYSET DYNAMIC FAST_FORWARD ]

[ READ_ONLY SCROLL_LOCKS OPTIMISTIC ]

[ FOR UPDATE [ OFcolumn_name[ . n ] ] ]