Array
(
)

verificar se o cursor esta aberto.

Eduardo.padilha
   - 30 mar 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.

Marcus.magalhaes
   - 26 abr 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,

Eduardo.padilha
   - 27 abr 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 ?

Marcus.magalhaes
   - 27 abr 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,

Eduardo Silva
   - 08 nov 2012

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

IF (CURSOR%ISOPEN) THEN
CLOSE CURSOR;
END IF;