viernes, 26 de octubre de 2012

SQLSERVER For Each sintaxis


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.

No hay comentarios:

Publicar un comentario