Servus,
was du brauchst, nennt sich "CURSOR".
DECLARE @varFeld1 int, @varFeld2 varchar(100) -- deklariere die Variablen in die du für jeden Schleifendurchlauf die Werte schreiben willst, die Datentypen sind nur beispielhaft gewählt
DECLARE myCursor CURSOR /* LOCAL FAST_FORWARD */ FOR
SELECT feld1, feld2 FROM Tabelle -- dein Select Statement
OPEN myCursor
FETCH NEXT FROM myCursor
INTO @varFeld1, @varFeld2
WHILE @@FETCH_STATUS = 0 BEGIN
EXEC SP_deineProcedure @varFeld1, @varFeld2
FETCH NEXT FROM myCursor
INTO @varFeld1, @varFeld2 -- holt den nächsten Datensatz ab und füllt die variablen
END
CLOSE myCursor
DEALLOCATE myCursor
Cursors sind für diese Art von Verarbeitung aktuell die einzige Möglichkeit und leider gottes nicht gerade sehr schonend. Es gibt verschiedene Optimierungsmöglichkeiten (auskommentierte Optionen am Anfang), die du dir im Handbuch von MS SQL durchlesen solltest. Und als Hinweis, es gibt in 80% der Fälle wo nur die Verwendung eines Cursors möglich scheint immer eine besser Alternative mit etwas mehr Umschreibeaufwand (Denk noch mal genau nach, was du erreichen willst - was ist der Endsieg, äh das Endziel). Bspw. könntest du eine Funktion schreiben und diese in dein eigentliches SELECT mit einbauen, so könnte sie auch von den selektierten Werten gefüttert werden.
Ciao, Frank