У моделях курсорів 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 ] ] ]