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

FROM dbo.Table2 -- выборка d2 из таблицы Table2




WHERE CURRENT OF abc;

GO

SELECT c1, c2 FROM dbo.Table1;

GO

Реультат:

 

Для удаления данных посредством курсора используется команда DELETE в следующем формате:

DELETE [FROM] имя_таблицы

WHERE CURRENT OF {{[GLOBAL] имя_курсора}

|@имя_переменной_курсора}

В результате будет удалена строка, установленная текущей в курсоре.

Пример: Следующий пример удаляет одну строку из таблицы EmployeePayHistory с помощью курсора complex_cursor. Операция удаления затрагивает только одну строку, выбранную в данный момент курсором.

USE AdventureWorks;

GO

--вывод выбираемых строк

SELECT Top (10) a.EmployeeID

FROM HumanResources.EmployeePayHistory AS a

WHERE RateChangeDate <>

(SELECT MAX(RateChangeDate)

FROM HumanResources.EmployeePayHistory AS b

WHERE a.EmployeeID = b.EmployeeID);

--Объявление курсора по выведенным данным

DECLARE complex_cursor CURSOR FOR

SELECT Top (10)a.EmployeeID

FROM HumanResources.EmployeePayHistory AS a

WHERE RateChangeDate <>

(SELECT MAX(RateChangeDate)

FROM HumanResources.EmployeePayHistory AS b

WHERE a.EmployeeID = b.EmployeeID);

--открытие курсора

OPEN complex_cursor;

--выборка первой строки курсора

FETCH FROM complex_cursor;

--удаление текущей (первой строки) курсора и записи из таблицы

DELETE FROM HumanResources.EmployeePayHistory

WHERE CURRENT OF complex_cursor;

CLOSE complex_cursor;

DEALLOCATE complex_cursor;

GO

--вывод результата

SELECT Top (10) a.EmployeeID

FROM HumanResources.EmployeePayHistory AS a

WHERE RateChangeDate <>

(SELECT MAX(RateChangeDate)

FROM HumanResources.EmployeePayHistory AS b

WHERE a.EmployeeID = b.EmployeeID);

Результат:

 

В некоторых случаях применение курсора неизбежно. Однако по возможности этого следует избегать и работать со стандартными командами обработки данных: SELECT, UPDATE, INSERT, DELETE. Помимо того, что курсоры не позволяют проводить операции изменения над всем объемом данных, скорость выполнения операций обработки данных посредством курсора заметно ниже, чем у стандартных средств SQL.

Временные таблицы

Если необходимо временно сохранить данные в таблицах, то работа с временными таблицами может оказаться предпочтительнее. Например, необходимо, чтобы данные были видимы только в текущем сеансе или даже в текущем пакете.

SQL Server поддерживает три вида временных таблиц: локальные временные таблицы, глобальные временные таблицы и табличные переменные.

 

Поделиться:





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





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



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