Laço While – SQL Server

Para utilizar um laço WHILE (enquanto) no SQL Server, siga os exemplos abaixo:

1) Exemplo de laço WHILE com incremento de uma variável:
DECLARE @intNumber INT = 1 — declarando uma variável INT e setando seu valor para 1
WHILE (@intNumber <=5) — enquanto a variável possuir valor menor ou igual a 5, execute
BEGIN
PRINT @intNumber — escreve o valor da variável
SET @intNumber = @intNumber + 1 — incrementa a variavel em uma unidade
END
GO

O resultado seria:
1
2
3
4
5

2) Exemplo varrendo uma tabela de produtos
— criação da tabela de produtos, com 5 registros:

create table #tb_produto(pro_codigo int, pro_nome varchar(100))
insert into #tb_produto (pro_codigo, pro_nome) values (1, ‘produto 1’)
insert into #tb_produto (pro_codigo, pro_nome) values (2, ‘produto 2’)
insert into #tb_produto (pro_codigo, pro_nome) values (3, ‘produto 3’)
insert into #tb_produto (pro_codigo, pro_nome) values (4, ‘produto 4’)
insert into #tb_produto (pro_codigo, pro_nome) values (5, ‘produto 5’)

— inserindo os registros em uma tabela temporaria, que possui uma flag para indicar os registros já apresentados

select 0 as tmp_flag, * into #tmp_produto from #tb_produto

while((select COUNT(*) from #tmp_produto where tmp_flag = 0 ) > 0) — enquando existirem registros com a flag = 0
begin

select top 1 * from #tmp_produto where tmp_flag = 0 — seleciona o primeiro registro (com flag igual a 0) e apresenta

update #tmp_produto set tmp_flag = 1 where #tmp_produto.pro_codigo = (select top 1 pro_codigo from #tmp_produto where tmp_flag = 0) — altera a flag do registro apresentado para 1

— ou pode deletar o registro da tabela temporaria depois de usar..
— delete from #tmp_produto where #tmp_produto.pro_codigo = (select top 1 pro_codigo from #tmp_produto where tmp_flag = 0)

end

 

OBS.1: O caracter “#” em frente ao nome da tabela identifica que está é uma tabela temporaria

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: