Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекции / Л-5 - Процедурные расширения SQL

.pdf
Скачиваний:
14
Добавлен:
28.06.2021
Размер:
592.42 Кб
Скачать

Текст запроса (2)

-- открываем курсор

OPEN cur

-- переход на начало курсора

FETCH NEXT FROM cur INTO @name, @surname -- двигаемся по курсору и печатаем строки

WHILE @@FETCH_STATUS = 0

BEGIN

SELECT @ message = @name+' '+@surname

PRINT @message

Текст запроса (3)

-- переход к следующему клиенту

FETCH NEXT FROM cur INTO @name, @surname

END

-- закрыть курсор

CLOSE cur

-- удалить курсор

DEALLOCATE cur

Текст запроса (1)

-- определяем переменные

DECLARE @name nvarchar(20), @surname nvarchar(20)

-- табличная переменная

DECLARE @t1 TABLE (name1 nvarchar (20), surname1 nvarchar(20))

-- объявляем курсор

DECLARE cur CURSOR LOCAL FOR

SELECT u_name, u_surname

FROM dbo.Users

WHERE u_status = 'active'

Текст запроса (2)

--открываем курсор

OPEN cur

--переход на начало курсора

FETCH NEXT FROM cur INTO @name, @surname

--двигаемся по курсору и заносим строки в табличную

--переменную

WHILE @@FETCH_STATUS = 0 BEGIN

INSERT INTO @t1 (name1,surname1) VALUES (@name, @surname)

FETCH NEXT FROM cur INTO @name, @surname

END

Текст запроса (3)

--закрыть курсор

CLOSE cur

--удалить курсор

DEALLOCATE cur

--вывести результат в приложение

SELECT * FROM @t1

Текст запроса (1)

-- определяем переменные

DECLARE @id INT,

@name NVARCHAR(20), @surname NVARCHAR(20), @phone NVARCHAR(12)

DECLARE klient_cursor CURSOR GLOBAL SCROLL KEYSET FOR

SELECT user_ID, u_name, u_surname, u_phone FROM dbo.Users

FOR UPDATE

Текст запроса (2)

OPEN klient_cursor

FETCH NEXT FROM klient_cursor INTO @id, @name, @surname, @phone

WHILE @@FETCH_STATUS = 0 BEGIN

--если фамилия клиента начинается на К,

--удалить клиента с такой фамилией

IF @surname LIKE 'К%'

DELETE dbo.Users

WHERE CURRENT OF klient_cursor

Текст запроса (3)

-- переход к следующему клиенту

FETCH NEXT FROM klient_cursor

INTO @id, @name, @surname, @phone

END

--в первой записи заменить первую цифру в

--номере телефона на 1

FETCH ABSOLUTE 1 FROM klient_cursor INTO @id, @name, @surname, @phone UPDATE dbo.Users

SET u_phone = '1'+RIGHT(@phone, LEN(@phone)-1)

Текст запроса (4)

WHERE CURRENT OF klient_cursor

CLOSE klient_cursor

DEALLOCATE klient_cursor

-- просмотр результата

SELECT * FROM dbo.Users