Главная » Microsoft SQL Server, Базы данных » Возвращение модифицированных данных

0

SQL Server 2005 может при необходимости возвращать модифицированные данные для последующего использования. Это может пригодиться, когда с этими данными должна быть проведена дополнительная работа. Также эти данные могут потребоваться клиентскому приложению для уменьшения нагрузки на сервер.

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

2005 d   В то же время эта новая функция Т-SQL, скорее всего, станет фаворитом при

решении реальных практических задач.

Предложение OUTPUT может получить доступ к вставляемым и удаляемым виртуальным таблицам, извлекая из них возвращаемые данные. Представления вставляемых и удаляемых таблиц до и после выполнения транзакции при обычных условиях используются только триггерами. Виртуальная таблица удаления содержит все старые данные, а виртуальная таблица вставки — только что вставленные или обновленные данные. Предложение OUTPUT способно извлечь столбцы из этих таблиц — все или только избранные.

Дополнительная Более подробно о виртуальных таблицах удаления и вставки мы поговорим в

информаций главе 23.

Возвращение данных из операции вставки

Инструкция INSERT открывает доступ к виртуальной таблице вставки. Следующий пример, взятый из приведенного выше материала главы, был отредактирован для вставки предложения OUTPUT. Виртуальная таблица Inserted содержит вставленные данные и возвращает их:

USE СНА2;

INSERT dbo.Guidelist (LastName, FirstName, Qualifications)

OUTPUT Inserted.*

VALUES(‘Nielsen’, ‘Paul’,’trainer’)

Результат выполнения пакета следующий:

GuidelD LastName FirstName Qualifications DateOfBirth DateHire

6                                             Nielsen Paul         trainer             NULL          NULL

Возвращение данных из операции обновления

Предложение OUTPUT также работает и с инструкцией UPDATE и может вернуть снимок данных до и после транзакции. В приводимом примере виртуальная таблица удаления используется для снятия исходных данных, а виртуальная таблица вставки содержит вставляемые значения. Возвращаются только старое и новое значения столбца Qualifications:

USE СНА2;

UPDATE dbo.Guide

SET Qualifications = ‘Scuba’

OUTPUT Deleted.Qualifications as OldQuals,

Inserted.Qualifications as NewQuals WHERE GuidelD = 3

Результат выполнения инструкции следующий:

OldQuals NewQuals

NULL  Scuba

Возвращение данных из инструкции удаления

При удалении данных только виртуальная таблица удаления содержит сколько-нибудь полезные данные:

DELETE dbo.Guide

OUTPUT Deleted.GuidelD, Deleted.LastName, Deleted.FirstName WHERE GuidelD = 3

Результат выполнения инструкции следующий:

GuidelD LastName FirstName

3  Wilson Sam

Возвращение данных в переменной @таЫе

Программистам Т-SQL предложение OUTPUT может вернуть данные для последующего использования в пакете или хранимой процедуре. В то же время эти данные можно поместить и в табличную переменную. Несмотря на то что синтаксис вам может показаться похожим на инструкцию INSERT. . . INTO, на самом деле эти операции функционируют совсем по-разному.

В приведенном ниже примере предложение OUTPUT передает свой результат табличной переменной @DeletedGuides.

DECLARE @DeletedGuides TABLE (

GuidelD INT,

LastName VARCHAR(50),

FirstName VARCHAR(50)

) ;

DELETE dbo.Guide

OUTPUT Deleted.GuidelD, Deleted.LastName, Deleted.FirstName INTO @DeletedGuides WHERE GuidelD = 2

Промежуточный результат будет следующим:

(1 row(s) affected)

Продолжаем выполнение пакета:

SELECT * FROM @DeletedGuides

Окончательный результат:

(1 row(s) affected)

GuidelD              LastName FirstName

2                 Frank                 Ken

Источник: Нильсен, Пол. Microsoft SQL Server 2005. Библия пользователя. : Пер. с англ. — М. : ООО “И.Д. Вильямс”, 2008. — 1232 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии