verificar se o cursor esta aberto.

SQL Server

30/03/2005

Ola Galera.

Tenho um store_Procedure onde abro e fecho cursores, porem
tem momentos em que pode ser q toda rotina nao seja executada
entao qdo ao processar novamente a sp acusa q o cursor x já esta aberto.

Pergunta tem uma forma de checar antes da execusao da rotina
se determinados cursores estao abertos ? se tiverem fecha-los.

Obrigado.


Eduardo.padilha

Eduardo.padilha

Curtidas 0

Respostas

Marcus.magalhaes

Marcus.magalhaes

30/03/2005

Boa noite.

Não tem como vc testar, o q vc deve fazer é garantir no sua procedure, que mesmo ela não sendo executada por inteiro, todos os cursores sejam fechados.

Att,


GOSTEI 0
Eduardo.padilha

Eduardo.padilha

30/03/2005

Bom dia Marcus.magalhaes.....

Olha eu novamente, como eu poderia garantir na minha sp que mesmo ela não sendo executada por inteiro, todos os cursores sejam fechados ?

Imagina q tenho 2 cursores trabalhando em conjunto , digamos
o cursor interno e o externo , suponhamos q minha rotina executou o q tinha para executar fechou o interno, por sua vez iria fechar o externo para sair fora da sp, mas antes de fechar o ultimo cursor aconteceu algum problema e nao conseguiu fechar , se eu tentar executar a rotina novamente o vai acusar q o cursor externo esta aberto e ae esta o problema.

Entao como eu posso garantir na minha sp que mesmo ela não sendo executada por inteiro, todos os cursores sejam fechados ?


GOSTEI 0
Marcus.magalhaes

Marcus.magalhaes

30/03/2005

Boa tarde Eduardo.

Se acontecer algum problema irá gerar um código de erro na variável @@error, assim basta vc tratar esta variável.

Att,


GOSTEI 0
Eduardo Silva

Eduardo Silva

30/03/2005

Tratamento de excessão e lá você testa quem está aberto...

IF (CURSOR%ISOPEN) THEN
CLOSE CURSOR;
END IF;
GOSTEI 0
POSTAR