Artigo: 8            
   Aprendendo a fazer Loops no SQL com o WHILE.


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



Sabemos que o cantinho da bagunça pode ser muito conveniente para o dia a dia, então criei o meu aqui na web

Quantidade de Artigos 800
Se quiser mandar mensagem é só mandar mensagem neste link.
Boa parte dos codigos aqui descritos estão em meu Git: Click aqui para ser redirecionado.