DECLARE @t2 AS TABLE(id INT)
INSERT INTO dbo.EntityMaster
(EntityType)
OUTPUT INSERTED.EntityId INTO @t2
SELECT 'G' FROM #tmp
#tmp is a temporary table that contains data loaded from an xml. I need to generate EntityId for each record contained in #tmp. It can be done by inserting record first into EntityMaster table then insert this entityid back into #tmp for each record.
Instead of inserting record into @t2, I need to update #tmp for each record.
Any possibility?
Try Something like this, you still have to use the temp table but it’s not too bad to read and it gets the job done.
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