Можете ли вы выполнить больше, чем операцию в разделе T-SQL MERGE? - PullRequest
0 голосов
/ 22 января 2019

Я был довольно успешным с моими попытками, мне нужно идентифицировать и закрепить столбцы OUTPUT (их #) и ту часть инструкции MERGE, с которой #of столбцы действительно соотносятся.Я просто спрашиваю, могу ли я выполнить несколько операций ВНУТРИ одного условия MERGE, как в примере ниже?

WHEN MATCHED
AND TARGET.ProductName <> SOURCE.ProductName 
OR TARGET.Rate <> SOURCE.Rate

THEN 
UPDATE SET TARGET.ProductName = SOURCE.ProductName, 
TARGET.Rate = SOURCE.Rate 

--MAGIC HERE ??
--CAN I ALSO 
--INSERT  in this same section before I do more in below condition?

WHEN NOT MATCHED BY TARGET THEN 

Я видел примеры для INSERT, выполненного из содержимого раздела OUTPUT оператора MERGE, ноМожно ли выполнить то, что я предложил, без использования другого запроса из результатов ВЫХОДА?

Ответы [ 2 ]

0 голосов
/ 22 января 2019

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

На основании этого Документация Microsoft :

Предложение OUTPUT возвращает информацию или выражения, основанные на каждой строке, затронутой оператором INSERT, UPDATE, DELETE или MERGE. Эти результаты могут быть возвращены приложению обработки для использования в таких вещах, как подтверждающие сообщения, архивирование и другие подобные требования приложения. Результаты также могут быть вставлены в таблицу или переменную таблицы. Кроме того, вы можете зафиксировать результаты предложения OUTPUT во вложенном операторе INSERT, UPDATE, DELETE или MERGE и вставить эти результаты в целевую таблицу или представление.

Приведенная выше статья содержит множество примеров, которые могут вам помочь.

Ссылки

0 голосов
/ 22 января 2019

нет ... переменная не может быть обновлена ​​более одного раза в одном и том же предложении MATCHED.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...