Jan 16 1897 12:00AM –сохраняются последние значения переменных.
Измененный пример: DECLARE MyCursor1 SCROLL CURSOR FOR (select * from Authors) OPEN MyCursor1 FETCH FIRST FROM MyCursor1 WHILE @@FETCH_STATUS = 0 BEGIN FETCH NEXT FROM MyCursor1 -- отсутствует INTO!!!!!!! END CLOSE MyCursor1 DEALLOCATE MyCursor1 Результат: Пример: объявляется простой курсор для строк таблицы Person.Contact, в которых фамилия начинается на букву B, и используется инструкция FETCH NEXT для перемещения по строкам. Инструкции FETCH возвращают значение для столбца, указываемого в DECLARE CURSOR в качестве результирующего набора, состоящего из одной строки. Ограничивается количество читаемых строк (10).
USE AdventureWorks GO DECLARE @n As Int DECLARE contact_cursor CURSOR FOR SELECT LastName FROM Person.Contact WHERE LastName LIKE 'B%' ORDER BY LastName set @n=0 OPEN contact_cursor FETCH NEXT FROM contact_cursor WHILE @@FETCH_STATUS = 0 and @n<=10 BEGIN FETCH NEXT FROM contact_cursor --возращает LastName set @n=@n+1 END CLOSE contact_cursor DEALLOCATE contact_cursor GO Результат:
Пример: аналогичен предыдущему, за исключением того, что выход инструкций FETCH сохраняется в локальных переменных, а не возвращается непосредственно клиенту. Инструкция PRINT объединяет переменные в одну строку и возвращает их клиенту. USE AdventureWorks GO DECLARE @LastName varchar(50), @FirstName varchar(50) DECLARE contact_cursor CURSOR FOR --динамический, прокрутка только вперед SELECT LastName, FirstName FROM Person.Contact WHERE LastName LIKE 'B%' ORDER BY LastName, FirstName OPEN contact_cursor FETCH NEXT FROM contact_cursor INTO @LastName, @FirstName WHILE @@FETCH_STATUS = 0 BEGIN PRINT 'Contact Name: ' + @FirstName + ' ' + @LastName FETCH NEXT FROM contact_cursor INTO @LastName, @FirstName END
CLOSE contact_cursor DEALLOCATE contact_cursor GO Результат:
Пример: В этом примере создается курсор SCROLL, предоставляющий все возможности прокрутки при помощи параметров LAST, PRIOR, RELATIVE и ABSOLUTE. USE AdventureWorks GO --Результирующий набор SELECT Top (10) LastName, FirstName FROM Person.Contact ORDER BY LastName, FirstName
DECLARE contact_cursor SCROLL CURSOR FOR –статический курсор SELECT Top (10) LastName, FirstName FROM Person.Contact
ORDER BY LastName, FirstName OPEN contact_cursor -- Перейти к последней строке курсора FETCH LAST FROM contact_cursor -- Перейти к предыдущей от текущей (посмотрите результат для последней строки) FETCH PRIOR FROM contact_cursor -- Перейти ко второй строке курсора FETCH ABSOLUTE 2 FROM contact_cursor -- Перейти на три строки вперед от текущей FETCH RELATIVE 3 FROM contact_cursor -- Перейти на две строки назад от текущей FETCH RELATIVE -2 FROM contact_cursor CLOSE contact_cursor DEALLOCATE contact_cursor GO Результат:
@@CURSOR_ROWS - Возвращает число выбранных строк, имеющихся в последнем открытом курсоре в данном подключении. Типы возвращаемых данных integer. Возвращаемое значение:
Пример: USE AdventureWorks GO DECLARE @I int, @n int set @n=0 DECLARE contact_cursor2 CURSOR FOR –статический курсор SELECT LastName FROM Person.Contact WHERE LastName LIKE 'B%' ORDER BY LastName OPEN contact_cursor2 SET @I = @@CURSOR_ROWS SELECT @I As 'Количество строк курсора' FETCH NEXT FROM contact_cursor2 WHILE @@FETCH_STATUS = 0 And @n<5 BEGIN set @n= @n + 1 SELECT @n FETCH NEXT FROM contact_cursor2 END CLOSE contact_cursor2 DEALLOCATE contact_cursor2 GO Результат:
Читайте также: II. Критерии для назначения повышенной стипендии Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|