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!
Nenhum comentário:
Postar um comentário