Exemplo básico de Cursor no SQL Server

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.


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

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.

7 comentários em “Exemplo básico de Cursor no SQL Server”

Deixe um comentário

*