Скачать презентацию SQL Курсоры Курсор — это средство языка Скачать презентацию SQL Курсоры Курсор — это средство языка

SQL-курсоры.ppt

  • Количество слайдов: 20

SQL. Курсоры. SQL. Курсоры.

Курсор - это средство языка SQL, позволяющее с помощью набора специальных операторов получить построчный Курсор - это средство языка SQL, позволяющее с помощью набора специальных операторов получить построчный доступ к результату запроса к БД.

Объявление курсора DECLARE <имя_курсора> [INSENSITIVE] [SCROLL] CURSOR FOR <подзапрос> [<предложение для обновления>]; Этот оператор Объявление курсора DECLARE <имя_курсора> [INSENSITIVE] [SCROLL] CURSOR FOR <подзапрос> [<предложение для обновления>]; Этот оператор не является выполняемым, он только связывает имя курсора со спецификацией курсора.

 • INSENSITIVE – нечувствительный – изменения, производимые другими операторами, будут игнорироваться, пока курсор • INSENSITIVE – нечувствительный – изменения, производимые другими операторами, будут игнорироваться, пока курсор открыт

 • SCROLL – позволяет извлекать строки в произвольном порядке • SCROLL – позволяет извлекать строки в произвольном порядке

 • предложение для обновления FOR [{READ ONLY |UPDATE |[OF имя столбца]] • предложение для обновления FOR [{READ ONLY |UPDATE |[OF имя столбца]]

Открытие курсора OPEN CURSOR <имя курсора>; Оператор открытия курсора должен быть первым в серии Открытие курсора OPEN CURSOR <имя курсора>; Оператор открытия курсора должен быть первым в серии выполняемых операторов, связанных с заданным курсором. При выполнении этого оператора производится подготовка курсора к работе над ним.

Построчное извлечения данных из курсора FETCH [[orientation]FROM] имя курсора INTO целевая спецификация. , . Построчное извлечения данных из курсора FETCH [[orientation]FROM] имя курсора INTO целевая спецификация. , . . ; orientation: : = NEXT | PRIOR | FIRST | LAST | {ABSOLUTE | RELATIVE спецификация значения}

INTO - содержит список спецификаций назначения (список имен переменных основной программы в случае встроенного INTO - содержит список спецификаций назначения (список имен переменных основной программы в случае встроенного SQL или имен "выходных" параметров в случае модуля SQL). Число и типы данных в списке назначений должны совпадать с числом и типами данных списка выборки спецификации курсора.

ОПЕРАТОР ПОЗИЦИОННОГО УДАЛЕНИЯ <delete statement: positioned> : : = DELETE FROM <table name> WHERE ОПЕРАТОР ПОЗИЦИОННОГО УДАЛЕНИЯ : : = DELETE FROM

WHERE CURRENT OF

ОПЕРАТОР ПОЗИЦИОННОЙ МОДИФИКАЦИИ <update statement: positioned> : : = UPDATE <table name> SET <set ОПЕРАТОР ПОЗИЦИОННОЙ МОДИФИКАЦИИ : : = UPDATE

SET [{, }. . . ] WHERE CURRENT OF : : = = { | NULL } : : =

Закрытие курсора CLOSE <имя курсора> Закрытие курсора CLOSE <имя курсора>

MS SQL SERVER MS SQL SERVER

Курсоры • Позволяют перемещаться между записями в наборе результатов • Позволяют получать значения полей Курсоры • Позволяют перемещаться между записями в наборе результатов • Позволяют получать значения полей отдельных записей • Позволяют вносить изменения в отдельные записи

Типы курсоров • Статические • Весь результат фиксируется при открытии курсора • Основанные на Типы курсоров • Статические • Весь результат фиксируется при открытии курсора • Основанные на потенциальном ключе • Набор записей фиксируется при открытии курсора • Динамические • Набор записей не фиксируется при открытии курсора

Объявление курсора DECLARE cursor_name CURSOR [ LOCAL | GLOBAL ] [ FORWARD_ONLY | SCROLL Объявление курсора 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 ] ] ]

Использование переменной типа cursor DECLARE @cursor_variable_name CURSOR SET @cursor_variable_name = CURSOR [ FORWARD_ONLY | Использование переменной типа cursor DECLARE @cursor_variable_name CURSOR SET @cursor_variable_name = CURSOR [ FORWARD_ONLY | SCROLL ] [ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ] [ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ] [ TYPE_WARNING ] FOR select_statement [ FOR UPDATE [ OF column_name [ , . . . n ] ] ]

Работа с курсором • Открытие курсора OPEN { { [ GLOBAL ] cursor_name } Работа с курсором • Открытие курсора OPEN { { [ GLOBAL ] cursor_name } | @cursor_variable_name } • Закрытие курсора CLOSE { { [ GLOBAL ] cursor_name } | @cursor_variable_name } • Удаление курсора DEALLOCATE { { [ GLOBAL ] cursor_name } | @cursor_variable_name }

Позиционирование курсора FETCH [ [ NEXT | PRIOR | FIRST | LAST | ABSOLUTE Позиционирование курсора FETCH [ [ NEXT | PRIOR | FIRST | LAST | ABSOLUTE { n | @nvar } | RELATIVE { n | @nvar } ] FROM ] { { [ GLOBAL ] cursor_name } | @cursor_variable_name } [ INTO @variable_name [ , . . . n ] ]

Пример использования DECLARE @name varchar(40) DECLARE authors_cursor CURSOR FOR SELECT au_lname FROM authors OPEN Пример использования DECLARE @name varchar(40) DECLARE authors_cursor CURSOR FOR SELECT au_lname FROM authors OPEN authors_cursor FETCH NEXT FROM authors_cursor INTO @name WHILE @@FETCH_STATUS = 0 BEGIN FETCH NEXT FROM authors_cursor INTO @name END CLOSE authors_cursor DEALLOCATE authors_cursor