Si necesitan realizar un For Each en SQL Server, pueden utilizar el siguiente codigo que permite recorrer una tupla de resultados:
En el siguiente ejemplo, se hace PRINT de todas las bases de datos que no sean las de sistema:
-- Cursor para recorrer
DECLARE c CURSOR READ_ONLY FAST_FORWARD FOR
--El query que contiene la coleccion por recorrer.
SELECT name
FROM sys.databases
WHERE name not in ('master','tempdb','model','msdb','aaa','bbb','ccc')
-- Variable donde ponen el valor a pivotear (item del foreach)
DECLARE @name varchar(max)
-- abre el cursor
OPEN c
-- Pone el valor en nuestro pivot
FETCH NEXT FROM c INTO @name
WHILE (@@FETCH_STATUS = 0)
BEGIN
print 'Realizando bucle en : ' + @name
-- Podria contener querys.
-- Select * from Tabla where XXX = @name...
-- Siguiente registro
FETCH NEXT FROM c INTO @name
END
-- Cierra el cursor
CLOSE c
DEALLOCATE c
Espero que les sirva.
Saludos.