Criando cursores em Sql Server (percorrendo uma tabela)
Postado por Marcio Rogério Nizzola em 06/03/2018 - Visitas: 1600
No SQL Server, o cursor é uma ferramenta que é usada para iterar em um conjunto de resultados ou para percorrer cada linha de um conjunto de resultados uma linha por vez. Pode não ser a melhor maneira de trabalhar com um conjunto de dados, mas se você precisa fazer uma linha de loop atuando linha a linha (RBAR) em um script T-SQL, então um cursor é uma maneira de fazê-lo.
Nota: Se você é novo no SQL Server e já utilizou Oracle, você deve saber que os cursores no SQL Server são diferentes da Oracle.
Antes de criar o cursor, começaremos com uma consulta simples que acabará por ser usada no cursor.
select * from ProjetoTipoContrato
O resultado da pesquisa é este:
Agora criaremos passo a passo um cursor:
1) Declare as variáveis que deseja preencher com o cursor
declare @codigo int, @descricao varchar(50);
2) Declare o objeto do tipo cursor
declare @listaCursor cursor;
3) Atribua uma query ao seu cursor
set @listaCursor = cursor for
select ProjetoTipoContratoId, descricao
from ProjetoTipoContrato;
4) Abra o cursor
open @listaCursor;
5) Pesquise a primeira linha
fetch next from @listaCursor into @codigo, @descricao;
6) Crie um loop que execute enquanto não houver mais resultados. A variável de sistema “FETCH_STATUS” enquanto for zero indica que ainda há linhas sendo carregadas.
while @@FETCH_STATUS = 0
begin
print cast( @codigo as varchar(10) ) + ' - ' + @descricao;
-- aqui poderão ser feitos updates, inserts,
-- executadas procedures utilizando-se as variáveis de cada registro
fetch next from @listaCursor into @codigo, @descricao;
end
7) Feche o cursor
close @listaCursor;
8) Destrua o objeto “Cursor” para liberação da memória do seu servidor.
deallocate @listaCursor
Resultado: