quinta-feira, 12 de julho de 2012

Cursor no Microsoft SQL Server

Neste post vou mostrar como funciona um cursor no Microsoft SQL Server de maneira bem simples.

Um curso é muito útil em casos em que se necessita de loop por exemplo, uma função para inserir registros no banco que dependem de uma outra consulta, por exemplo, onde pra cada resultado dessa primeira consulta, alguma ação será realizada, ou então para efetuar alguma ação, com condições, por exemplo, apagar um determinado tipo de tabela, caso ela tenha mais de x registros.

Bom, segue um exemplo básico:

-- declarações de variáveis
DECLARE @COD_CONTA INTEGER
DECLARE @DESC_CONTA VARCHAR(256)
DECLARE @SALDO DECIMAL

-- declaração e criação do curso com os dados resultantes da select.
DECLARE db_cursor CURSOR FOR
SELECT cod_conta, desc_conta, saldo
FROM tbcontas
WHERE saldo > 0

-- abre o cursor
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @COD_CONTA, @DESC_CONTA, @SALDO --atribui o valor do 1º registro do cursor as variáveis

WHILE @@FETCH_STATUS = 0 --Percorre enquanto houver registros
BEGIN
-- AQUI será realizada as operações que você quiser com os dados obtidos no registro do cursor.
insert into tbContaPositiva(cod_conta, desc_conta, saldo) values (@COD_CONTA, @DESC_CONTA, @SALDO)
delete from tbContas where cod_conta = @COD_CONTA
print 'Conta ' + @DESC_CONTA ' +  Transferida com Sucesso'

--atribui o valor do próximo registro do cursor as variáveis
FETCH NEXT FROM db_cursor INTO @COD_CONTA, @DESC_CONTA, @SALDO
END

CLOSE db_cursor --fecha e limpa o cursor.
DEALLOCATE db_cursor

Bom, essa é a ideia do cursor.

Agora é só montar de acordo com o seu cenário.


Créditos: Lucas Mendes

0 comentários:

Postar um comentário

 
;