gebruik een cursor
ADDENDUM:[voorbeeld MS SQL-cursor]
declare @field1 int
declare @field2 int
declare cur CURSOR LOCAL for
select field1, field2 from sometable where someotherfield is null
open cur
fetch next from cur into @field1, @field2
while @@FETCH_STATUS = 0 BEGIN
--execute your sproc on each row
exec uspYourSproc @field1, @field2
fetch next from cur into @field1, @field2
END
close cur
deallocate cur
in MS SQL, hier is een voorbeeldartikel
merk op dat cursors langzamer zijn dan op sets gebaseerde bewerkingen, maar sneller dan handmatige while-loops; meer details in deze SO-vraag
ADDENDUM 2:als u meer dan een paar records gaat verwerken, trek ze dan eerst naar een tijdelijke tabel en beweeg de cursor over de tijdelijke tabel; dit voorkomt dat SQL escaleert in table-locks en versnelt de werking
ADDENDUM 3:en natuurlijk, als je wat je opgeslagen procedure ook doet inline kunt doen met elke gebruikers-ID en het hele ding als een enkele SQL-update-instructie kunt uitvoeren, zou dat optimaal zijn