>Create Procedure DontUseCursors >As >DECLARE @MasterRef varchar(10) >DECLARE @ClaimRef varchar(10) > > >Declare @i int > >SELECT @MasterRef = c.MasterRef, > @ClaimRef = p.ClaimRef > FROM PIFTest p > Inner Join claim c > on c.ClaimRef = p.ClaimRef > INNER JOIN (SELECT MIN(ClaimRef) AS ClaimRef FROM PIFTest) Tbl1 >ON p.ClaimRef = Tbl1.ClaimRef > >Select @i = Count(ClaimRef) From PIFTest > >WHILE (@i > 0) > BEGIN > print @ClaimRef > SELECT @MasterRef = c.MasterRef, > @ClaimRef = p.ClaimRef > FROM PIFTest p > Inner Join claim c > on c.ClaimRef = p.ClaimRef > INNER JOIN (SELECT MIN(ClaimRef) As ClaimRef FROM PIFTest > Where ClaimRef > @ClaimRef) Tbl1 > ON p.ClaimRef = Tbl1.ClaimRef > print @i > Set @i = (@i - 1) > END > > >GO >>
Create Procedure DontUseCursors As DECLARE @MasterRef varchar(10) DECLARE @MasterRefMax varchar(10) DECLARE @ClaimRef varchar(10) Declare @i int SELECT @MasterRef = c.MasterRef, @MasterRefMax = Tbl1.MaxRef, @ClaimRef = c.ClaimRef FROM claim c INNER JOIN (SELECT MIN(ClaimRef) AS ClaimRef, MAX(ClaimRef) AS MaxRef FROM Claim) Tbl1 ON c.ClaimRef = Tbl1.ClaimRef WHILE @MasterRef IS NOT NULL AND @MasterRef <= @MasterRefMax BEGIN print @ClaimRef SELECT @MasterRef = c.MasterRef, @ClaimRef = c.ClaimRef FROM claim c INNER JOIN (SELECT MIN(ClaimRef) As ClaimRef FROM claim Where ClaimRef > @ClaimRef) Tbl1 ON p.ClaimRef = Tbl1.ClaimRef ENDagain not tested :-)