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.

Petter Rafael

Desenvolvedor Web atua com as tecnologias Java e PHP apoiadas pelos bancos de dados Oracle e MySQL. Além dos ambientes de desenvolvimento acima possuiu amplo conhecimento em servidores Apache/Tomcat, Photoshop, Arte & Foto, Flash e mais uma dezena de ferramentas e tecnologias emergentes. Atualmente colabora com o Viablog escrevendo sobre programação e tecnologia.