segunda-feira, 13 de agosto de 2012

Procedures Cursores - Básico

Olá, pessoal!
Hoje vou falar sobre cursores. Uma possibilidade existente em PL/SQL e procedures que pode ser muito útil.
O que é um Cursor?
Um cursor em PL/SQL armazena uma área da memória para guardar o resultado de uma pesquisa. Esta pesquisa pode conter nenhum, um ou muitos dados que serão armazenados em linhas e colunas.
Então dentro de uma procedure podemos utilizar um cursor, que terá um nome e poderá se comportar como uma variável, porém uma variável que armazena mais de um campo dos dados. Através deste armazenamento é possível manipular ou comparar as informações
Os cursores podem ser Implícitos ou Explícitos sendo que o Explícito acaba por consumir mais recursos de memória.
Em uma procedure ou function o cursor deve ser declarado junto das variáveis, ou seja, antes do Begin e depois do create procedure/function. E podemos utiliza-lo de duas formas.
Forma Extensa ou Forma Resumida.


A Forma Extensa não é a forma mais utilizada e usamos os seguintes comandos:
·         Open: Abre o cursor e executa o comando de pesquisa select informado na declaração, tendo executado a pesquisa o cursor separa um espaço da memória para guardar temporariamente esses dados de linhas e colunas. Já que agora esses dados estão armazenados na memória, o cursor não precisará mais acessar o banco para obtê-los. É nesse momento, também, que é passado para o cursor os parâmetros, caso tenha utilizado de parâmetros de entrada.
·         Fetch:   Informará qual valor do cursor uma determinada variável receberá. Funciona através do conceito de ponteiro, onde ele irá informar a esta variável qual a linha corrente e em seguida posicionar o ponteiro na linha seguinte para a próxima repetição da operação. As linhas no cursor somente poderão ser acessadas quando seus valores forem passados para uma variável possível de ser manipuladas em PL/SQL.
·         Close: Fecha o cursor após sua execução e assim libera a área de memória onde o cursor estava armazenado.
Cursor Implícito Extenso:
O cursor implícito leva esse nome por suas ações ficarem “escondidas”. Ele não informa o que está fazendo, apenas faz. E assim podemos utilizar alguns comandos de manipulação.


Cursor Implícito Resumido
No Cursor Implícito Resumido utilizamos somente um comando que irá substituir os outros três. Este comando a estrutura de repetição FOR. Este comando irá abrir o cursor, criar a variável do tipo registro que irá receber os dados sem necessidade de declara-la, realizar cópias das linhas, uma a uma a cada repetição, controlará o final do cursor e seu fechamento.


Cursor Explícito
Os cursores explícitos são utilizados para controle de processamento, sempre que é necessário que apareça o que o cursor está fazendo.


Neste exemplo o que o cursor faz é simplesmente informar os valores encontrado na tabela para aquele campo especifico.
Ele é chamado explícito porque sua forma de ação é declarada, ele informa algo que está acontecendo em sua execução.

É isso, pessoal! Quado acontecem erros nas ferramentas de ETL temos como observar qual o código que foi gerado. Tendo essa noção sobre PL/SQL e principalmente sobre procedures e cursores podemos entender o que foi feito e analisar para descobrir qual o erro na geração do código para corrigirmos as definições de carga.

Espero ter ajudado, até o próximo post!

Bibliografia:

Nenhum comentário:

Postar um comentário