Iterar datos sin cursores
En este ejemplo, supondremos que tenemos una tabla clientes y nos interesa iterar solo los clientes de tipo 3.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
DECLARE @idx INT = 1 -- DEBE EMPEZAR EN 1 , @countRegistros INT = 0 -- Datos a iterar DECLARE @datos TABLE ( idx INT NOT NULL IDENTITY, clienteId BIGINT NOT NULL, nombreCliente VARCHAR(500) NOT NULL ) -- Se obtienen los clientes de tipo 3 INSERT INTO @datos SELECT cl.clienteId, cl.nombreCompleto [nombreCompleto] FROM clientes cl WHERE tipoClienteId = 3 -- Se obtiene un COUNT de los datos a iterar SELECT @countRegistros = COUNT(*) FROM @datos -- Se itera registro por registro WHILE @idx <= @countRegistros BEGIN SELECT * FROM @datos WHERE idx = @idx SET @idx += 1 END |