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
Criando Cursor em Stored Procedure
Rodrigo Fortes
sexta-feira, dezembro 11, 2009