Primeiro vamos entender como funciona o comando WHILE ou fluxo do loop com um valor, este valor passará por uma analise lógica que fará a iteração acontecer, a cada iteração do loop,
a condição definida é verificada e de acordo com o resultado da condição, o fluxo do código é determinado. Se o resultado da condição for verdadeiro, a ele executará algum tipo de instrução
(Pode ser até uma procedure a parte), caso contrário, o fluxo de código sairá do loop. Caso exista algum código fora do loop, o mesmo será executado.
WHILE condicao
BEGIN
END
Outro exemplo mais complexo:
Uma variável do tipo TINYINT chamada contador, atribuiremos o valor 0 para esta variável.
No WHILE vamos definir a seguinte condição: enquanto o valor da variável for menor ou igual a 5 continue fazendo o LOOP.
Dentro do corpo do WHILE vamos exibir a variável contador sendo incrementada a cada iteração, cada vez que esta variável é exibida, atribuímos (setamos) o valor do contador + 1 para a variável, ou seja,
se no primeiro loop o valor é 0, ao entrar no corpo do WHILE a variável vai receber o valor dela mesma + 1, armazenando agora o valor 1.
Este processo é repetido até que, a variável atenda o valor da condição do WHILE. Uma vez que a condição é atendida o LOOP é finalizado.
DECLARE @CONTADOR TINYINT
SET @CONTADOR=0
WHILE ( @CONTADOR <= 5)
BEGIN
PRINT @CONTADOR
SET @CONTADOR = @CONTADOR + 1
END
Neste Exemplo realizamos apenas o COUNT para visualizarmos a quantidade de registros inseridos na tabela. 10 mil linhas foram inseridas na variável do tipo tabela @TB_WHILE.
DECLARE @VALUE_INCREMENT INT
DECLARE @TB_WHILE TABLE (
COD_WHILE SMALLINT IDENTITY,
TEXT_WHILE VARCHAR (20),
VALUE_WHILE INT)
SET @VALUE_INCREMENT= 1
WHILE @VALUE_INCREMENT <= 10000
BEGIN
INSERT INTO @TB_WHILE (TEXT_WHILE,VALUE_WHILE)
VALUES (CONCAT('TEXT NUMBER: ', @VALUE_INCREMENT), @VALUE_INCREMENT *10)
SET @VALUE_INCREMENT = @VALUE_INCREMENT + 1
END
--SELECT COUNT(*) AS QTD_ROWS FROM @TB_WHILE
SELECT * FROM @TB_WHILE