Create Procedure DontUseCursors As DECLARE @MasterRef varchar(10) DECLARE @ClaimRefCurr varchar(10) DECLARE @ClaimRef varchar(10) SELECT @MasterRef = c.MasterRef, @ClaimRef = c.ClaimRef FROM claim c INNER JOIN (SELECT MIN(ClaimRef) AS ClaimRef FROM Claim) Tbl1 ON c.ClaimRef = Tbl1.ClaimRef WHILE @ClaimRef IS NOT NULL BEGIN print @ClaimRef SET @ClaimRefCurr = @ClaimRef SET @ClaimRef = NULL SELECT @MasterRef = c.MasterRef, @ClaimRef = c.ClaimRef FROM claim c INNER JOIN (SELECT MIN(ClaimRef) AS ClaimRef FROM claim WHERE ClaimRef > @ClaimRefCurr) Tbl1 ON p.ClaimRef = Tbl1.ClaimRef END