Microsoft SQL-Server Foreach Row
8. Januar 2010 von Hendrik Schreiber
Wenn man mit dem SQL Server 2005 eine Tabelle Reihe für Reihe durchlaufen möchte, muss man folgendes tun (Quelle: Link):
DECLARE @cnt int DECLARE @cntMax int SELECT @cnt=1; SELECT @cntMax =Count(ID) FROM myTable WHERE x=1
WHILE @cnt <= @cntMax
BEGIN --While Loop
WITH AbfrageLoop AS (
SELECT row_number() OVER (ORDER BY ID) AS Row,*
FROM myTable
WHERE x=1
)
SELECT @y=y FROM AbfrageLoop WHERE Row=@cnt
DECLARE @y int --do something based on the query
DELETE FROM AnotherTable WHERE AnotherY=@y
SELECT @cnt = @cnt+1
END --While Loop
Bedenklich bei diesem Beispiel ist nur die Select-Abfrage für AbfrageLoop, da die bei großen Abfragen viel Zeit kostet. Besser ist wahrscheinlich, die vor die While-Schleife zu verlagern.
Das Ganze ist nur mit Vorsicht zu verwenden!

Ich denke, dass das mit Zeigern auch besser geht