Criando cursores em Sql Server (percorrendo uma tabela)

Postado por em 06/03/2018 - Visitas: 121



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:


 

Cursores com Sql


Cursores com Sql


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:


Resultado Cursores


Resultado Cursores


Criando cursores em Sql Server (percorrendo uma tabela) / Cursores com Sql


Cursores com Sql

Criando cursores em Sql Server (percorrendo uma tabela) / Resultado Cursores


Resultado Cursores
Gostou ? Compartilhe