Hãy thử một cái gì đó như thế này, bạn vẫn phải sử dụng bảng tạm thời nhưng nó không quá tệ để đọc và nó hoàn thành công việc.
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