我有一个包含DetailID、PackageID、TemplateID和DocumentID列的[DETAIL]
表。其中,DetailID
列是主键。
然后,在存储过程中,我使用了一个临时表。
DECLARE @temp TABLE
(
DetailID INT NULL,
PackageID INT,
TemplateID INT NULL,
DocumentID INT NULL,
)
该临时表已经填充了PackageID、TemplateID和DocumentID。
我正在尝试使用匹配的行更新临时表中的DetailID。对于不匹配的行,在临时表中DetailID将为null。
UPDATE @temp
SET DetailID = D.DetailID
FROM Details D
WHERE D.PackageID = @temp.PackageID AND
((D.TemplateID IS NOT NULL AND D.TemplateID = @temp.TemplateID) OR
(D.DocumentID IS NOT NULL AND D.DocumentID = @temp.DocumentID))
我遇到了一个错误
必须声明标量变量 "@temp"
templateid 不为空
然后再进行相等性检查是不必要的。SQL 可能会对它们进行优化,但也可能不会。只是想提一下。 - Xedni