Rodrigo Fortes

"Só duas coisas são infinitas, o universo e a estupidez humana, mas não estou seguro sobre o primeiro"

Criando Cursor em Stored Procedure

A falta de tempo esta me matando, o dia deveria ter 48 horas.

Bom, anteriormente mostrei como criar Stored Procedures em SQL Server, agora vou mostrar como criar um cursor dentro de uma stored procedure.

Não é nada complexo, neste exemplo vou criar o cursor a partir dos resultados de uma query.

Imaginemos a tabela 'produto' a seguir:

select cdprod, nmprod, vlprod from produto where vlprod = 10



--declaro o cursor retornando o resultado da consulta
declare c1 cursor local fast_forward for
select cdprod from produto where vlprod = 10
--abro o cursor jogando o valor na variável @cdprod
open c1 fetch next from c1 into @cdprod
--faço o loop
while (@@FETCH_STATUS = 0)
begin

Neste exemplo a minha consulta resultará 4 resultados que serã controlados pelo cursor c1 e a variável @cdprod. Após realizar as instruções tenho que passar para o próximo registro, senão resultará em um loop infinito.

--passa para o próximo registro
fetch next from c1 into @cdprod

Abaixo a instrução completa:

declare c1 cursor local fast_forward for
select cdprod from produto where vlprod = 10
open c1 fetch next from c1 into @cdprod
while (@@FETCH_STATUS = 0)
begin

update Produto set vlprod = 11 where cdprod = @cdprod

fetch next from c1 into @cdprod
end

Não deve-se esquecer de declarar a variável @cdprod, o resultado deste exemplo será passar todos os valores do campo vlprod dos registros retornados da consulta para o valor 11