použijte kurzor
DODATEK:[Příklad kurzoru MS SQL]
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
v MS SQL, zde je příklad článku
všimněte si, že kurzory jsou pomalejší než operace založené na množinách, ale rychlejší než ruční smyčky while; více podrobností v této otázce SO
DODATEK 2:pokud budete zpracovávat více než jen několik záznamů, natáhněte je nejprve do dočasné tabulky a přesuňte kurzor nad dočasnou tabulku; to zabrání eskalaci SQL do uzamčení tabulek a urychlí provoz
DODATEK 3:a samozřejmě, pokud můžete vložit cokoliv, co vaše uložená procedura dělá, s každým ID uživatele a spustit celou věc jako jediný příkaz aktualizace SQL, bylo by to optimální