Verwenden Sie einen Cursor
NACHTRAG:[MS SQL-Cursor-Beispiel]
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 ist ein Beispielartikel
Beachten Sie, dass Cursor langsamer sind als mengenbasierte Operationen, aber schneller als manuelle While-Schleifen; Weitere Details in dieser SO-Frage
ANHANG 2:Wenn Sie mehr als nur ein paar Datensätze verarbeiten, ziehen Sie sie zuerst in eine temporäre Tabelle und führen Sie den Cursor über die temporäre Tabelle. dies verhindert, dass SQL in Tabellensperren eskaliert, und beschleunigt den Betrieb
ANHANG 3:und natürlich, wenn Sie alles, was Ihre gespeicherte Prozedur mit jeder Benutzer-ID macht, inline inlinen und das Ganze als einzelne SQL-Update-Anweisung ausführen könnten, wäre das optimal