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: