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!
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