我需要使用存储过程中声明的临时变量。我需要使用此变量来赋值并在Matched语句中执行一些函数。我该怎么用?还有其他方法可以获得价值吗?
提前致谢
答案 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映射。有什么建议吗?
我的帖子更像是对原始问题的补充。