如何在SQL Server 2008中的MERGE语句中声明临时变量?

时间:2012-03-14 05:52:30

标签: sql sql-server-2008

我需要使用存储过程中声明的临时变量。我需要使用此变量来赋值并在Matched语句中执行一些函数。我该怎么用?还有其他方法可以获得价值吗?

提前致谢

3 个答案:

答案 0 :(得分:1)

这是在SQL Server中定义局部变量的方法:

DECLARE @MyVariable INT
SET @MyVariable = 12
SELECT HouseNumber + @MyVariable as NewHouseNumber FROM MyTable WHERE Id = 1

答案 1 :(得分:0)

如果在MERGE语句之前声明变量,那么您确实可以在MERGE语句中使用该变量。这个变量和表变量以及标量变量。

答案 2 :(得分:0)

我觉得他有点像这样的事情

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中的输入参数)带有ID,需要与另一个talbe映射。有什么建议吗?

我的帖子更像是对原始问题的补充。