Курсоры static, keyset и dynamic имеют значение по умолчанию scroll.
STATIC (расширенная форма) - Определяет курсор, который создает временную копию данных для использования курсором. Все запросы к курсору обращаются к указанной временной таблице в базе данных tempdb, поэтому изменения базовых таблиц не влияют на данные, возвращаемые выборками для данного курсора, а сам курсор не позволяет производить изменения. KEYSET (расширенная форма) - Указывает, что членство или порядок строк в курсоре не изменяются после его открытия. Набор ключей, однозначно определяющих строки, встроен в таблицу в базе данных tempdb с именем keyset. DYNAMIC (расширенная форма) - Определяет курсор, отображающий все изменения данных, сделанные в строках результирующего набора при просмотре этого курсора. Значения данных, порядок, а также членство строк в каждой выборке могут меняться. Параметр выборки ABSOLUTE динамическими курсорами не поддерживается (рассматривается ниже). FAST_FORWARD (расширенная форма) - Указывает курсор FORWARD_ONLY, READ_ONLY, для которого включена оптимизация производительности. Параметр FAST_FORWARD не может указываться вместе с параметрами SCROLL или FOR_UPDATE. SCROLL_LOCKS (расширенная форма) - Указывает, что позиционированные изменения или удаления, сделанные через этот курсор, будут гарантированно применены. Microsoft SQL Server блокирует строки при их считывании в курсор, что обеспечивает возможность их последующего изменения. Параметр SCROLL_LOCKS не может указываться вместе с параметром FAST_FORWARD или STATIC. OPTIMISTIC (расширенная форма) - Указывает, что позиционированные изменения или удаления, сделанные через этот курсор, не будут успешными, если эти строки были изменены после считывания в курсор. SQL Server не блокирует строки при их считывании в курсор. Вместо этого, чтобы определить, изменялась ли строка после считывания в курсор, выполняется сравнение значений столбца timestamp (или контрольных сумм, если в таблице нет столбца timestamp). Если строка была изменена, то ее позиционированное изменение или удаление невозможно. Параметр OPTIMISTIC не может указываться вместе с параметром FAST_FORWARD.
TYPE_WARNING (расширенная форма) - Указывает, что клиенту посылается предупреждающее сообщение при неявном преобразовании типа курсора из запрошенного типа в другой тип.
FOR UPDATE [OF column_name [,... n ]] - Указывает столбцы курсора, которые можно изменять. Если указано предложение OF column _ name [,... n ], то изменения разрешаются только для перечисленных столбцов. Если инструкция UPDATE используется без списка столбцов, то обновление возможно для всех столбцов, за исключением случая, когда был указан параметр READ_ONLY. Замечания: Если в инструкции DECLARE CURSOR, выполненной согласно SQL-92, параметр SCROLL не указан, единственным поддерживаемым параметром инструкции FETCH является NEXT. Если в инструкции DECLARE CURSOR, выполненной согласно SQL-92, указан параметр SCROLL, поддерживаются все параметры инструкции FETCH.
При использовании расширений курсора Transact-SQL DECLARE применимы следующие правила: · Если указан FORWARD_ONLY или FAST_FORWARD, единственным поддерживаемым параметром инструкции FETCH является NEXT. · Если DYNAMIC, FORWARD_ONLY или FAST_FORWARD не указаны и указан один из параметров KEYSET, STATIC или SCROLL, поддерживаются все параметры инструкции FETCH. · Курсоры DYNAMIC SCROLL поддерживают все параметры инструкции FETCH, за исключением параметра ABSOLUTE. Примеры объявления курсоров (SQL 92 Syntax): 1. DECLARE MyCursor1 CURSOR FOR (select * from Authors) /*объявили курсор с названием MyCursor1, который содержит всю информацию об авторах, двигаться по нему можно только от первой записи до последней. Курсор является динамическим. Нет параметров INSENSITIVE и SCROLL */ 2. DECLARE MyCursor1 INSENSITIVE CURSOR FOR (select * from Authors) /*объявили курсор с названием MyCursor1, который содержит всю информацию об авторах, двигаться по нему можно только от первой записи до последней. Курсор является статическим. Параметр INSENSITIVE */
3. DECLARE MyCursor1 SCROLL CURSOR FOR (select * from Authors) 4. /*объявили курсор с названием MyCursor1, который содержит всю информацию об авторах, двигаться по нему можно в любом направлении. Курсор является динамическим. Параметр SCROLL */ 5. DECLARE MyCursor1 INSENSITIVE SCROLL CURSOR FOR (select * from Authors) /*объявили курсор с названием MyCursor1, который содержит всю информацию об авторах, двигаться по нему можно в любом направлении. Курсор является статическим. */ 6. DECLARE MyCursor1 CURSOR FOR (select * from Authors) FOR READ ONLY /*объявили курсор с названием MyCursor1, который содержит всю информацию об авторах, двигаться по нему можно только от первой записи до последней (нет параметра SCROL). Курсор является динамическим. Данные доступны только для чтения.*/ 7. DECLARE MyCursor1 CURSOR FOR (select * from Authors) FOR UPDATE /*объявили курсор с названием MyCursor1, который содержит всю информацию об авторах, двигаться по нему можно только от первой записи до последней. Курсор является динамическим. Данные курсора можно менять.*/
Читайте также: B) назначение сердечных гликозидов Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|