DECLARE @t2 AS TABLE(id INT)
INSERT INTO dbo.EntityMaster (EntityType) OUTPUT INSERTED.EntityId INTO @t2 SELECT 'G' FROM #tmp
#tmp是一个临时表,其中包含从xml加载的数据。我需要为中EntityId包含的每个记录生成一个#tmp。可以通过先将记录插入EntityMaster表中,然后再#tmp为每个记录插入该实体id来完成。
#tmp
EntityId
EntityMaster
无需将记录插入@t2,我需要#tmp为每个记录进行更新。
@t2
有没有可能
尝试类似这样的事情,您仍然必须使用temp表,但它的可读性还不错,并且可以完成工作。
CREATE TABLE #tmp ( tmpID INT IDENTITY(1,1) PRIMARY KEY CLUSTERED, xmlData VARCHAR(255), EntityId INT ) DECLARE @t2 TABLE ( tmpID INT, EntityId INT ) MERGE dbo.EntityMaster AS EM USING ( SELECT tmpID, xmlData, EntityId FROM #tmp ) AS X ON EM.EntityId = X.EntityId WHEN NOT MATCHED THEN INSERT (EntityType) VALUES (X.xmlData) OUTPUT X.tmpID, INSERTED.EntityId INTO @t2 (tmpID, EntityId); UPDATE T SET EntityId = T2.EntityId FROM @t2 T2 INNER JOIN #tmp T ON T2.tmpID = T.tmpID