Usuário com melhor resposta
Função com While

Pergunta
-
Respostas
-
Existem muitas formas de fazer isso.. A única que vc deve sempre evitar é o uso de cursor!
Segue um exemplo usando While.
DECLARE @COD_AUX AS INT DECLARE @TOTAL AS INT SELECT @TOTAL = COUNT(COD_USUARIO) FROM TABELA SET @CONTADOR = 1 WHILE @CONTADOR <= @TOTAL BEGIN IF @CONTADOR = 1 BEGIN SET @COD_AUX = 0 END SELECT TOP 1 @COD = COD_USUARIO FROM TABELA WHERE COD_USUARIO > @COD_AUX ORDER BY COD_USUARIO SET @COD_AUX = @COD SELECT TOP 1 * FROM TABELA WHERE COD_USUARIO = @COD ORDER BY COD_USUARIO SET @CONTADOR = CONTADOR + 1 END
Flávio Farias
"May the Force be with you"
Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Sugerido como Resposta Lucio Rogerio SPBanned segunda-feira, 10 de agosto de 2015 14:31
- Marcado como Resposta jceoms segunda-feira, 10 de agosto de 2015 17:31
Todas as Respostas
-
Bom dia jceoms,
tudo bem?
Não sei se compreendi muito bem o que precisa fazer, mas peço que de uma olhada nesta outra thread.
Espero ter compreendido e auxiliado.
Atenciosamente
Marcos Roberto de Souza Junior
Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
-
Bom dia jceoms,
Você pode usar um cursor. Segue um exemplo:
DECLARE #cursor CURSOR FOR SELECT Chapa, nome from Funcionarios --(aqui vai seu select) OPEN #cursor --VARIÁVEIS QUE VÃO RECEBER OS VALORES DOS CAMPOS DO SEU SELECT DECLARE @codigo INT DECLARE @nome INT --CARREGA OS DADOS DO PRIMEIRO REGISTRO FETCH NEXT FROM #cursor INTO @codigo, @nome WHILE @@FETCH_STATUS = 0 --ENQUANTO TIVER DADOS BEGIN --(FAZ ALGUMA COISA AQUI...) --CARREGA O PROXIMO REGISTRO FETCH NEXT FROM #cursor INTO @codigo, @nome END CLOSE #cursor DEALLOCATE #cursor
- Editado João Otávio A sexta-feira, 7 de agosto de 2015 13:18 Linguagem errada
-
Existem muitas formas de fazer isso.. A única que vc deve sempre evitar é o uso de cursor!
Segue um exemplo usando While.
DECLARE @COD_AUX AS INT DECLARE @TOTAL AS INT SELECT @TOTAL = COUNT(COD_USUARIO) FROM TABELA SET @CONTADOR = 1 WHILE @CONTADOR <= @TOTAL BEGIN IF @CONTADOR = 1 BEGIN SET @COD_AUX = 0 END SELECT TOP 1 @COD = COD_USUARIO FROM TABELA WHERE COD_USUARIO > @COD_AUX ORDER BY COD_USUARIO SET @COD_AUX = @COD SELECT TOP 1 * FROM TABELA WHERE COD_USUARIO = @COD ORDER BY COD_USUARIO SET @CONTADOR = CONTADOR + 1 END
Flávio Farias
"May the Force be with you"
Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Sugerido como Resposta Lucio Rogerio SPBanned segunda-feira, 10 de agosto de 2015 14:31
- Marcado como Resposta jceoms segunda-feira, 10 de agosto de 2015 17:31