Por que eu devo ler este artigo:Quando desejamos trabalhar com quantidades grandes de dados, recorremos a estruturas para percorrermos cada linha de retorno de uma consulta, e a essas estruturas, damos o nome de cursores.

Basicamente, o cursor permite que passemos do primeiro registro até o último, linha por linha, nos dando a possibilidade de manipular os dados, seja para visualização ou até mesmo para transformação dos registros, dentro do próprio banco de dados.

Este artigo tem como objetivo apresentar ao leitor o que são cursores e suas melhores práticas de utilização, as diferenças entre cada uma e quando utilizá-las.

Isto permite ao leitor ter uma ideia mais clara de que, mesmo sabendo que o resultado final será o mesmo, uma técnica empregada pode possuir uma característica que vai resultar em diferença de performance em um ambiente. Além disso, serão abordados alguns detalhes que podem otimizar o uso de algumas das técnicas apresentadas.

Melhor do que se mostrar diferentes maneiras de como fazer algo, é mostrar quando se pode utilizar cada uma delas. Não tem importância se quando formos apenas extrair alguns dados corriqueiros, executarmos aquela forma que é considerada a pior.

Se é a mais fácil de lembrarmos e sabemos que não vai importar para o cliente aquela execução pontual, mesmo porque, pode ser que ela só esteja sendo feita essa única vez, para atender alguma solicitação de última hora e nunca vá fazer parte efetiva de uma aplicação ou rotina critica diária.

Agora, se estamos falando de um resultado que a sua gerência aguarda ansiosamente todo dia pela manhã, para tomada de decisões, é claro que a forma empregada deve ser a melhor possível. Sabemos que nesse caso existe uma espera e cobrança pela entrega das informações.

Então, mesmo sabendo que podemos entregar um mesmo resultado utilizando diferentes maneiras, devemos também saber qual forma utilizar. A diferença não é só técnica, passa a ser um fator decisivo e diferencial quando falamos de tempo versus performance.

Antes de iniciarmos a abordagem sobre as diferentes maneiras de se utilizar cursores no Oracle, precisamos saber o que é um cursor. Alguns desenvolvedores/DBAs costumam dizer que um cursor é uma maneira de “nomear” um select, porém, se formos analisar por esse prisma, criar uma VIEW também é uma maneira de nomear um select.

Essa definição é um pouco vaga e deixa o significado de cursor muito aberto para diferentes interpretações.

Um cursor é uma estrutura definida em um bloco de código PL-SQL para manipular dados resultantes de uma consulta em um determinado banco de dados.

Apesar do nome, um cursor se baseia em uma consulta (select), porém, diferente de uma consulta, que apenas nos apresenta o resultado, o cursor pode nos possibilitar uma manipulação de dados que o próprio select não poderia, não da mesma maneira, e lidando bem com uma quantidade maior de dados.

Além disso, o cursor é um apontador para uma área de memória do Oracle, denominada context área. Esta área é reservada para processamentos de consultas e está contida na PGA (Program Global Area). Podemos dizer que a context area é a área de trabalho para consultas.

Além de sabermos o que é um cursor, devemos saber que podemos manipular diretamente apenas um tipo determinado de cursor. Este, que definimos em código, pode ser chamado de cursor explícito.

O outro tipo, o implícito, é criado pelo próp ...

Quer ler esse conteúdo completo? Seja um assinante e descubra as vantagens.
  • 473 Cursos
  • 10K Artigos
  • 100 DevCasts
  • 30 Projetos
  • 80 Guias
Tenha acesso completo