BEGIN TRY
CREATE TABLE #aaa
(
Id BIGINT IDENTITY(1,1) NOT NULL PRIMARY KEY ,
xyzmasterCode VARCHAR(15) NOT NULL )
INSERT INTO#aaa (xyzmasterCode,NumberOfRows)
SELECT DISTINCT xyzmasterCode, COUNT(*)
FROM xyz
WHERE xyzmasterCode BETWEEN '0' AND 'Z'
AND filterDate <= @filterDate
GROUP BY xyzmasterCode
SET @Id = 0
WHILE 1=1
BEGIN
BEGIN TRAN
DELETE a
FROM xyz a,#aaa
WHERE a.xyzmasterCode = #aaa.xyzmasterCode
AND #aaa.Id between @Id and @Id + 100
AND filterDate <= @filterDate
DELETE J
FROM xyzmaster J,#aaa
WHERE J.Code = #aaa.xyzmasterCode
AND#aaa.Id between @Id and @Id + 100
COMMIT TRANSACTION;
CHECKPOINT
IF @DeleteRowcount <=0
BREAK
SET @Id = @Id + 100
END
END TRY