Как я могу иметь временную переменную, объявленную в операторе MERGE в SQL Server 2008? - PullRequest
0 голосов
/ 14 марта 2012

Мне нужно использовать временную переменную, объявленную в хранимой процедуре. Мне нужно использовать эту переменную, чтобы присвоить значение и выполнить некоторую функцию в операторе Matched. Как я могу использовать? Есть ли другой способ иметь значение ??

Заранее спасибо

Ответы [ 3 ]

1 голос
/ 14 марта 2012

Вот как вы можете определить локальную переменную в SQL Server:

DECLARE @MyVariable INT
SET @MyVariable = 12
SELECT HouseNumber + @MyVariable as NewHouseNumber FROM MyTable WHERE Id = 1
0 голосов
/ 07 апреля 2015

Я думаю, он что-то вроде этого

MERGE TargetTable as tar
USING SourceTable as src
ON tar.SomeID = src.OtherID

DECLARE @BossId INT
SET @BossId = (SELECT ID FROM EmployeeTable WHERE [BossID] = src.BossID)
--Here we take dynamicly an ID from another table

WHEN NOT MATCHED THEN
  INSERT (list OF fields, [BossID])
  VALUES (list OF values, @BossId)

WHEN MATCHED THEN
  UPDATE
    SET (list OF SET statements);

Таким образом, в каждом операторе INSERT будет свой BossID. Это вообще возможно? Если нет - как вставить записи таким образом? Представьте, что SourceTable (который в моем случае является входным параметром в SP) поставляется с идентификатором, который необходимо сопоставить с другим значением. Есть предложения?

Мой пост больше похож на дополнение к оригинальному вопросу.

0 голосов
/ 14 марта 2012

Если вы объявляете переменную, предшествующую оператору MERGE, тогда вы действительно можете использовать эту переменную в операторе MERGE.Это яблоки для таблицы переменных, а также скалярные переменные.

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