Trabalhando com Cursor no SQL Server

cursor sql server

Cursores são mecanismos que permitem que as linhas de uma tabela sejam manipuladas uma a uma. Atuam como ponteiros que apontam para as linhas que formas o resultado de uma dada consulta que é armazenada no cursos. Podemos recuperar e manipular os valores de cada linha apontada por um cursos.

Veja abaixo a sintaxe para criação de um cursor no SQL Server

--drop table tabela_clientes
--go

--create table tabela_clientes(
--nome_cliente varchar(200),
--cpf_cliente varchar(200)
--)
--go

--insert into tabela_clientes values
--('Fabio', NULL),
--('Jorge', 21325658454)
--go

--select * from tabela_clientes
--go

DECLARE
@nome_cliente VARCHAR(50),
@cpf_cliente VARCHAR(50)

--Declarando o cursor
DECLARE nome_do_cursor CURSOR FOR

--dados que o cursos ira trabalhar
SELECT
nome_cliente, cpf_cliente
FROM
tabela_clientes

--abre o cursor
OPEN nome_do_cursor

--posicionar o ponteiro do cursor na primeira linha do resultado do select acima
FETCH NEXT FROM nome_do_cursor

--insere nas variaveis os valores da primeira linha do resultado armazenado no cursor
INTO @nome_cliente, @cpf_cliente

--Esse parte diz "Enquanto tiver linha no cursor, faça:"
WHILE @@FETCH_STATUS = 0

--Nessa parte você insere o bloco de instruções que ira trabalhar no seu cursor.

--Se CPF for igual a nulo
BEGIN
IF ((SELECT cpf_cliente FROM tabela_clientes WHERE cpf_cliente = @cpf_cliente) is NULL)

--Inserir no final do nome da pessoa o texto "Atualizar CPF"
BEGIN
UPDATE tabela_clientes SET nome_cliente = @nome_cliente + ' Atualizar CPF'
END
FETCH NEXT FROM nome_do_cursor
INTO @nome_cliente, @cpf_cliente
END

--Para fechar o cursos você precisar inserir os seguinte comandos
CLOSE nome_do_cursor
DEALLOCATE nome_do_cursor

select * from tabela_clientes
go

Veja um vídeo sobre como Criar um Cursor

Você pode usar Cursor para inúmeras situações.

Se desejar ver mais sobre cursores acesse: