Повернення модифікованих даних

SQL Server 2005 може при необхідності повертати модифіковані дані для подальшого використання Це може стати в нагоді, коли з цими даними повинна бути проведена додаткова робота Також ці дані можуть знадобитися клієнтського додатку для зменшення навантаження на сервер

Можливість негайно повертати результати без необхідності залу-Ноаінка чення інших інструкцій може на перший погляд здатися несуттєвою

2005 dУ той же час ця нова функція Т-SQL, швидше за все, стане фаворитом при

вирішенні реальних практичних завдань

Пропозиція OUTPUT може отримати доступ до вставляються і видаляються віртуальним таблицями, витягуючи з них повертаються дані Уявлення вставляються і видаляються таблиць до і після виконання транзакції при звичайних умовах використовуються тільки тригерами Віртуальна таблиця видалення містить всі старі дані, а віртуальна таблиця вставки – щойно вставлені або оновлені дані Пропозиція OUTPUT здатне витягти стовпці з цих таблиць – все або тільки обрані

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

інформацій чолі 23

Повернення даних з операції вставки

Інструкція INSERT відкриває доступ до віртуальної таблиці вставки Наступний приклад, взятий з наведеного вище матеріалу глави, був відредагований для вставки пропозиції OUTPUT Віртуальна таблиця Inserted містить вставлені дані і повертає їх:

USE СНА2

INSERT dboGuidelist (LastName, FirstName, Qualifications)

OUTPUT Inserted*

VALUES(Nielsen, Paul,trainer)

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

GuidelD LastName FirstName Qualifications DateOfBirth DateHire

6&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Nielsen Paul         trainer             NULL          NULL

Повернення даних з операції оновлення

Пропозиція OUTPUT також працює і з інструкцією UPDATE і може повернути знімок даних до і після транзакції У наводиться прикладі віртуальна таблиця видалення використовується для зняття вихідних даних, а віртуальна таблиця вставки містить вставляються значення Повертаються тільки старе і нове значення стовпця Qualifications:

USE СНА2

UPDATE dboGuide

SET Qualifications = Scuba

OUTPUT DeletedQualifications as OldQuals,

InsertedQualifications as NewQuals WHERE GuidelD = 3

Результат виконання інструкції наступний:

OldQuals NewQuals

NULL  Scuba

Повернення даних з інструкції видалення

При видаленні даних тільки віртуальна таблиця видалення містить скільки-небудь корисні дані:

DELETE dboGuide

OUTPUT DeletedGuidelD, DeletedLastName, DeletedFirstName WHERE GuidelD = 3

Результат виконання інструкції наступний:

GuidelD LastName FirstName

3&nbsp Wilson Sam

Повернення даних у змінній @ ТаИе

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

У наведеному нижче прикладі пропозицію OUTPUT передає свій результат табличній змінної @ DeletedGuides

DECLARE @DeletedGuides TABLE (

GuidelD INT,

LastName VARCHAR(50),

FirstName VARCHAR(50)

)

DELETE dboGuide

OUTPUT DeletedGuidelD, DeletedLastName, DeletedFirstName INTO @DeletedGuides WHERE GuidelD = 2

Проміжний результат буде наступним:

(1 row(s) affected)

Продовжуємо виконання пакету:

SELECT * FROM @DeletedGuides

Остаточний результат:

(1 row(s) affected)

GuidelD              LastName FirstName

2&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Frank                 Ken

Джерело: Нільсен, Пол Microsoft SQL Server 2005 Біблія користувача : Пер з англ – М: ООО ІД Вільямс , 2008 – 1232 с : Ил – Парал тит англ

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*