Cómo hacer un bucle o iteración en SQL
Aprende a utilizar la cláusula WHILE en T-SQL y así podrás iterar como un pro! 🐿️

El lenguaje de consulta SQL tiene, al igual que un lenguaje de programación, estructuras de control, y una de ellas es precisamente WHILE, mediante la cual podemos hacer una iteración y es lo que acontinuación voy a mostrarte cómo hacerlo.

Cabe señalar que SQL trabaja con datos, y en muchas ocasiones vamos a querer iterar sobre esos datos ya sea porque queremos alterar algunos datos basados en cálculos complejos de algunas columnas de cada fila o porque queremos mostrar algunas de las filas de un determinado conjunto de datos.

Es cierto que SQL nos provee de Cursores, que también nos permite iterar, sin embargo el bucle que aquí aprenderás es más ligero y podrás conseguir el mismo objetivo utilizando sólo una sentencia básica como el WHILE. Comencemos!

--Declarar variable tabla
DECLARE @VENDORTEMP TABLE(
	ID			INT IDENTITY,
	VendorId	INT
)
--Llenar la tabla
INSERT INTO @VENDORTEMP
	SELECT BusinessEntityID FROM Purchasing.Vendor
	WHERE CreditRating > 3

DECLARE @COUNTER INT = 1
DECLARE @VendorId INT

WHILE @COUNTER <= (SELECT COUNT(0) FROM @VENDORTEMP)
BEGIN
	SET @VendorId = (SELECT VendorId FROM @VENDORTEMP WHERE ID = @COUNTER)
	----------------------------	
	--Aquí va lo que haremos en cada iteración, puede ser hacer
	--actualizaciones, o mostrar algo en pantalla o insertar data
	--en una tabla existente, temporal o variable para generar un reporte.
	PRINT 'Iteración #' + CAST(@COUNTER AS VARCHAR(5))
	+ ' - Vendor ID:' + CAST(@VendorId AS VARCHAR(5))
	----------------------------
	SET @COUNTER += 1
END

En este caso hemos usado una tabla como variable para que haga las veces de una tabla temporal, pero también podrías haber utilizado tablas temporales como tal, para lograrlo simplemente deberás reemplazar la declaración de la tabla con esto:

--Con esta validación evitamos errores al crear la tabla temporal
IF OBJECT_ID('tempdb..#VENDORTEMP') IS NOT NULL DROP TABLE #VENDORTEMP
CREATE TABLE #VENDORTEMP (
	ID			INT IDENTITY,
	VendorId	INT
)

Ejecuté ese código y obtengo esto, por supuesto tú puedes adecuarlo a lo que necesites, lo importante es que ya sabes cómo hacer iteraciones con SQL 😉


Espero que esta entrada te haya gustado estimado dev!

Foto de Tangerine Newt en Unsplash

Si ese es el caso, entonces no dudes en compartir este artículo con todos tus conocidos, de esa forma el conocimiento llega a más personas y además te harás un referente, lo bueno es pegajoso, recuérdalo 🐿️🥳😉

Créditos de la imagen de portada: Foto de Jonny Gios en Unsplash

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *