Para quem desconhece, um Cursor é uma estrutura de dados Transact-SQL que permite percorrer as linhas retorno de uma consulta SQL e executar uma ou várias ações. Basicamente funciona como um loop através dos registros de uma consulta.
No exemplo abaixo irei demonstrar uma estrutura básica de um Cursor simples que irá percorrer uma tabela de clientes atualizando o nome completo de cada cliente baseado no primeiro nome e sobrenome.
[sourcecode language=”plain”]
DECLARE @codcliente int, @primeironome VARCHAR(30), @sobrenome VARCHAR(60), @nomecompleto VARCHAR(90)
— Cursor para percorrer os registros
DECLARE cursor1 CURSOR FOR
select codcliente, nome, sobrenome from clientes
–Abrindo Cursor
OPEN cursor1
— Lendo a próxima linha
FETCH NEXT FROM cursor1 INTO @codcliente, @primeironome, @sobrenome
— Percorrendo linhas do cursor (enquanto houverem)
WHILE @@FETCH_STATUS = 0
BEGIN
— Executando as rotinas desejadas manipulando o registro
update clientes set nomecompleto = @primeironome + ‘ ‘ + @sobrenome where codcliente = @codcliente
— Lendo a próxima linha
FETCH NEXT FROM cursor1 INTO @codcliente, @primeironome, @sobrenome
END
— Fechando Cursor para leitura
CLOSE cursor1
— Finalizado o cursor
DEALLOCATE cursor1
[/sourcecode]
A ideia deste artigo é apresentar um “Modelo” de cursor que possa ser copiado e alterado de acordo com sua necessidade já que a estrutura dele é um pouco chata de se lembrar quando precisamos utilizar.
Até a próxima.
Comments are closed.
7 Comments
Lenofevereiro 3, 2016
Exemplo simples e bem pratico e bem explicado, facilita o entendimento de Cursores. Parabens.
Tibériofevereiro 3, 2016
Muito bom… prático e objetivo. Excelente. Parabéns!!
Alexandrefevereiro 3, 2016
Muito bom! direto ao ponto.
Júnior Pachecofevereiro 3, 2016
Entendi já de primeira o funcionamento do Cursor.
Obrigado
Júnior Pachecofevereiro 3, 2016
Obrigado por compartilhar!
Antônio Lopesfevereiro 3, 2016
Parabéns, me ajudou a relembrar a estrutura mesmo 😉
Natanfevereiro 3, 2016
Valeu cara, esse exemplo ajudou muito!