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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|