Først og fremmest skal du være helt sikker på, at du skal gentage hver række – sætbaserede operationer vil fungere hurtigere i alle de tilfælde, jeg kan komme i tanke om, og vil normalt bruge enklere kode.
Afhængigt af dine data kan det være muligt at sløjfe ved at bruge SELECT
udsagn som vist nedenfor:
Declare @Id int
While (Select Count(*) From ATable Where Processed = 0) > 0
Begin
Select Top 1 @Id = Id From ATable Where Processed = 0
--Do some processing here
Update ATable Set Processed = 1 Where Id = @Id
End
Et andet alternativ er at bruge en midlertidig tabel:
Select *
Into #Temp
From ATable
Declare @Id int
While (Select Count(*) From #Temp) > 0
Begin
Select Top 1 @Id = Id From #Temp
--Do some processing here
Delete #Temp Where Id = @Id
End
Den mulighed, du skal vælge, afhænger virkelig af strukturen og mængden af dine data.
Bemærk: Hvis du bruger SQL Server, ville du være bedre tjent med at bruge:
WHILE EXISTS(SELECT * FROM #Temp)
Bruger COUNT
bliver nødt til at trykke på hver enkelt række i tabellen,