Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

В моделях курсоров API базы данных однонаправленный курсор рассматривается как отдельный тип курсора.




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

 

Оба этих способа (Transact-SQL и API-функции курсоров базы данных) никогда не должны использоваться в приложении одновременно.

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

Если не был запрошен ни Transact-SQL, ни API-курсор, SQL Server целиком возвращает по умолчанию результирующий набор приложению (это называется результирующим набором по умолчанию).

 

Для всех курсоров SQL Server используется одинаковый цикл обработки.

1. Создание или объявление курсора. Связать курсор с результирующим набором инструкции Transact-SQL и задать его характеристики (например, возможность обновления строк).

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

3. Получить в курсор необходимые строки. Операция получения в курсор одной и более строк называется выборкой. Выполнение серии выборок для получения строк в прямом или обратном направлении называется прокруткой.

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

5. Закрыть курсор (после чего он становится недоступным для пользовательских программ).

6. Освобождение курсора, т.е. удаление курсора как объекта, поскольку его закрытие необязательно освобождает ассоциированную с ним память

 

Указанные этапы обработки реализуются следующими операторами:

Инструкция DECLARE CURSOR определяет такие атрибуты серверного курсора языка Transact-SQL, как свойства просмотра и запрос, используемый для построения результирующего набора, на котором работает курсор.

Инструкция OPEN заполняет результирующий набор.

Оператор FETCH возвращает из него строку (3 и 4 этапы).

Инструкция CLOSE очищает текущий результирующий набор, связанный с курсором.

Инструкция DEALLOCATE освобождает ресурсы, используемые курсором.

 

 

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

Синтаксис

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

DECLARE cursor_name [ INSENSITIVE ] [ SCROLL ] CURSOR

FOR select_statement

[ FOR { READ ONLY | UPDATE [ OF column_name [,...n ] ] } ]

[;]

 

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

DECLARE cursor_name CURSOR [ LOCAL | GLOBAL ]

[ FORWARD_ONLY | SCROLL ]

[ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ]

[ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ]

[ TYPE_WARNING ]

FOR select_statement

[ FOR UPDATE [ OF column_name [,...n ] ] ]

[;]

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...