Verificando cursores no PL/SQL
[ad#texto]
Todo desenvolvedor PL/SQL utiliza constantemente cursores, seja pela praticidade, ou seja, pela necessidade mesmo, mas existe um pequeno detalhe que constantemente vejo desenvolvedores Oracle (mesmo os mais experientes) esquecerem: validar se o cursor já não está aberto.
Caso a sua aplicação, por um descuido tente abrir um cursor já aberto irá disparar o erro ORA-06511, sinalizando que o cursor já está aberto e como solução é preciso fechar a instancia atual para poder abri-lo novamente. Constantemente isso se faz necessário, pois como um cursor pode ser parametrizado, podemos precisar fecha-lo e abri-lo diversas vezes dentro da rotina PL/SQL em execução, necessitando assim que uma validação seja adicionada ao código PL/SQL.
Devemos então, antes de abrir um cursor testar se ele já não está aberto, da seguinte forma:
If SEU_CURSOR%isopen then
Close SEU_CURSOR;
End if;
Open SEU_CURSOR;
Simples assim, evitando várias dores de cabeça.