2015-08-19 3 views
0

Я использую MERGE для выполнения UPSERT. Однако в разделе THEN мне нужно выполнить более одной операции, мне нужно как INSERT, так и UPDATE что-то в другой таблице. Моя проблема в том, что я, кажется, не вижу, как выполнять более одного действия.выполнить более одной операции над MERGE ... THEN в SQL SERVER

Я попытался это:

MERGE tblCategories AS T 
    USING @RELEVANT_CATS AS S 
    ON (T.CatId = S.CatId) 
    WHEN NOT MATCHED BY TARGET 
     THEN 
      BEGIN 
       INSERT (BizID, RequestId) VALUES(S.CatId, @CatId); 
      END 

BEGIN и END здесь не разрешены по какой-то причине.

попытался Также это:

MERGE tblCategories AS T 
    USING @RELEVANT_CATS AS S 
    ON (T.CatId = S.CatId) 
    WHEN NOT MATCHED BY TARGET 
     THEN EXECUTE INSERT_CAT S.CatId, @CatId; 

INSERT_CAT Где некоторая хранимая процедура, которая выполняет то, что мне нужно, но опять же, этот синтаксис не допускается.

Любые идеи?

ответ

1

Начните сделку.
Добавьте output clause в свою слияние и запишите результаты слияния в переменную таблицы.
Используйте переменную таблицы, чтобы обновить другую таблицу, где захваченный $action был 'INSERT'.
Заключить сделку.

+0

Замечательно! Спасибо. – dsb

Смежные вопросы