CURSOR   Oracle
UTILIZANDO CURSORES NO
ORACLE
Primeiro, vamos definir um cursor como um arquivo temporário que
armazena e controla as linhas retornadas de um comando select...


No Oracle, temos dois tipos de cursores os cursores implícitos e os cursores
explícitos.
CURSORES IMPLÍCITOS

Todo comando de Insert, Delete, Update e Select (QUANDO RETORNA
APENAS UMA LINHA) é tratado pelo Oracle como um cursor implícito.


Como o intuito não é falar de todos os comandos DML e DDL, estaremos
focados nos cursores explícitos!
CURSORES EXPLÍCITOS
Estes cursores precisam ser declarados e os dados retornados da consulta
são acessados através de variáveis.
Vamos dividir a criação de cursores em quatro passos básicos:
1.    Declaração;
2.   Abertura;
3.   Atribuição dos valores às variáveis;
4.    Fechamento.
CURSORES EXPLÍCITOS
Na declaração do cursor atribuímos um nome a ele, e um comando
SELECT.
Quando este cursor é aberto, o comando select é executado.
Com o cursor aberto podemos atribuir valores retornados pelo select às
variáveis, manipulá-las e então fechar o cursor para liberar os recursos do
servidor.
Você pode criar diversos cursores, mas deve estar ciente que é preciso
tomar cuidado com a memória alocada para eles.
Outra coisa bem legal sobre os cursores é que eles podem receber
parâmetros, e estes parâmetros podem ser inicializados com um valor
default.
CURSORES EXPLÍCITOS


Mão na massa !
OS LAÇOS DE REPETIÇÃO
Os famosos LOOPs!
Temos diversos tipos de loop e eles devem ser usados de acordo com a sua
necessidade. Estes laços podem ser usados com diversos objetos não só
com cursores.
Vamos começar dizendo conceitualmente o que é um Laço de Repetição:
São comandos que executam outros comandos repetidas vezes.


Vamos então aos tipos de Laço:
OS LAÇOS DE REPETIÇÃO
LOOP
Este tipo de laço executa uma seqüência de comandos contida entre seu
início e fim, ou seja executa infinitas vezes tudo o que estiver entre os
comandos LOOP – END LOOP.
Este laço é infinito, por isso junto com ele usamos um dos seguintes
comandos EXIT ou EXIT – WHEN. Estes comandos servem para
interromper um loop.
OS LAÇOS DE REPETIÇÃO
EXIT
Este comando sai do loop imediatamente. Quando este comando é
encontrado, o LOOP é imediatamente encerrado, e o controle é passado
para o próximo comando. Este comando deve estar dentro do LOOP.


EXIT – WHEN
Este comando termina o loop de maneira condicional. Quando o comando
EXIT é encontrado a condição da cláusula WHEN é verificada. Se a
condição for verdadeira, o loop é interrompido, e o controle é passado para
o próximo comando.
OS LAÇOS DE REPETIÇÃO


LOOP
       -- Comandos que serão executados infinitamente
END LOOP;
OS LAÇOS DE REPETIÇÃO

LOOP
       -- Comandos que devem ser executados
       IF Variavel_Criada_Instanciada > valor_Exemplo THEN
             EXIT;
       END IF;
END LOOP;
OS LAÇOS DE REPETIÇÃO


LOOP
       EXIT WHEN Variavel_Criada_Instanciada > valor_Exemplo ;
       -- Comandos que devem ser executados
END LOOP;
OS LAÇOS DE REPETIÇÃO
WHILE-LOOP
Este tipo de laço, executa uma sequência de comandos enquanto a
condição do comando WHILE for verdadeira.
Antes de cada iteração do loop a condição é checada, se ela for satisfeita os
comandos serão executados, se a condição for falsa ou nula o loop será
interrompido e o controle passado para o próximo comando.
Ao usar este tipo de loop, temos que lembrar que a variável da condição
deve ser manipulada dentro do loop, ou teremos um loop infinito.
OS LAÇOS DE REPETIÇÃO

WHILE Variavel_Criada_Instanciada <=1000 LOOP
       --Comandos executados
Variavel_Criada_Instanciada = Variavel_Criada_Instanciada +
Outra_Variave_ou_Constante;
END LOOP;
OS LAÇOS DE REPETIÇÃO
FOR – LOOP
Este tipo de laço o número de vezes que o comando será executado é
informado.
Entre as palavras chave FOR e LOOP temos o esquema que controla o
loop.


FOR CONTADOR IN
[REVERSE] VALOR_INICIAL_DO_CONTADOR..VALOR_FINAL_DO_CONT
ADOR LOOP
--Comandos que serão executados
END LOOP;
OS LAÇOS DE REPETIÇÃO
O CONTADOR controlará o numero de vezes que o comando será
executado dentro de um intervalo de valores entre o
VALOR_INICIAL_DO_CONTADOR e o VALOR_FINAL_DO_CONTADOR
(este intervalo é indicado pelo símbolo “..”).
A cada vez que os comandos são executados o valor do contador é
incrementado.
Por padrão o valor do contador é incrementado, mas podemos também
fazer o inverso, utilizando a palavra chave REVERSE antes de especificar o
intervalo de valores.
O range pode ser especificado através de constantes, ou de variáveis,
dependendo da necessidade e da lógica.
OS LAÇOS DE REPETIÇÃO
Os laços de repetição ajudam muito o desenvolvedor (independente da
linguagem). No caso do PL/SQL é preciso que o desenvolvedor conheça a
necessidade do objeto que está criando para que o seu loop funcione
corretamente.
Não custa lembrar que é sempre bom verificar se as variáveis que fazem
parte do conjunto de comandos do loop estão declaradas corretamente, se a
regra de negócio está sendo respeitada, se a condição de saída do loop em
algum momento será satisfeita entre outras verificações.
OS LAÇOS DE REPETIÇÃO


Práticar !

Cursor

  • 1.
    CURSOR Oracle
  • 2.
    UTILIZANDO CURSORES NO ORACLE Primeiro,vamos definir um cursor como um arquivo temporário que armazena e controla as linhas retornadas de um comando select... No Oracle, temos dois tipos de cursores os cursores implícitos e os cursores explícitos.
  • 3.
    CURSORES IMPLÍCITOS Todo comandode Insert, Delete, Update e Select (QUANDO RETORNA APENAS UMA LINHA) é tratado pelo Oracle como um cursor implícito. Como o intuito não é falar de todos os comandos DML e DDL, estaremos focados nos cursores explícitos!
  • 4.
    CURSORES EXPLÍCITOS Estes cursoresprecisam ser declarados e os dados retornados da consulta são acessados através de variáveis. Vamos dividir a criação de cursores em quatro passos básicos: 1. Declaração; 2. Abertura; 3. Atribuição dos valores às variáveis; 4. Fechamento.
  • 5.
    CURSORES EXPLÍCITOS Na declaraçãodo cursor atribuímos um nome a ele, e um comando SELECT. Quando este cursor é aberto, o comando select é executado. Com o cursor aberto podemos atribuir valores retornados pelo select às variáveis, manipulá-las e então fechar o cursor para liberar os recursos do servidor. Você pode criar diversos cursores, mas deve estar ciente que é preciso tomar cuidado com a memória alocada para eles. Outra coisa bem legal sobre os cursores é que eles podem receber parâmetros, e estes parâmetros podem ser inicializados com um valor default.
  • 6.
  • 7.
    OS LAÇOS DEREPETIÇÃO Os famosos LOOPs! Temos diversos tipos de loop e eles devem ser usados de acordo com a sua necessidade. Estes laços podem ser usados com diversos objetos não só com cursores. Vamos começar dizendo conceitualmente o que é um Laço de Repetição: São comandos que executam outros comandos repetidas vezes. Vamos então aos tipos de Laço:
  • 8.
    OS LAÇOS DEREPETIÇÃO LOOP Este tipo de laço executa uma seqüência de comandos contida entre seu início e fim, ou seja executa infinitas vezes tudo o que estiver entre os comandos LOOP – END LOOP. Este laço é infinito, por isso junto com ele usamos um dos seguintes comandos EXIT ou EXIT – WHEN. Estes comandos servem para interromper um loop.
  • 9.
    OS LAÇOS DEREPETIÇÃO EXIT Este comando sai do loop imediatamente. Quando este comando é encontrado, o LOOP é imediatamente encerrado, e o controle é passado para o próximo comando. Este comando deve estar dentro do LOOP. EXIT – WHEN Este comando termina o loop de maneira condicional. Quando o comando EXIT é encontrado a condição da cláusula WHEN é verificada. Se a condição for verdadeira, o loop é interrompido, e o controle é passado para o próximo comando.
  • 10.
    OS LAÇOS DEREPETIÇÃO LOOP -- Comandos que serão executados infinitamente END LOOP;
  • 11.
    OS LAÇOS DEREPETIÇÃO LOOP -- Comandos que devem ser executados IF Variavel_Criada_Instanciada > valor_Exemplo THEN EXIT; END IF; END LOOP;
  • 12.
    OS LAÇOS DEREPETIÇÃO LOOP EXIT WHEN Variavel_Criada_Instanciada > valor_Exemplo ; -- Comandos que devem ser executados END LOOP;
  • 13.
    OS LAÇOS DEREPETIÇÃO WHILE-LOOP Este tipo de laço, executa uma sequência de comandos enquanto a condição do comando WHILE for verdadeira. Antes de cada iteração do loop a condição é checada, se ela for satisfeita os comandos serão executados, se a condição for falsa ou nula o loop será interrompido e o controle passado para o próximo comando. Ao usar este tipo de loop, temos que lembrar que a variável da condição deve ser manipulada dentro do loop, ou teremos um loop infinito.
  • 14.
    OS LAÇOS DEREPETIÇÃO WHILE Variavel_Criada_Instanciada <=1000 LOOP --Comandos executados Variavel_Criada_Instanciada = Variavel_Criada_Instanciada + Outra_Variave_ou_Constante; END LOOP;
  • 15.
    OS LAÇOS DEREPETIÇÃO FOR – LOOP Este tipo de laço o número de vezes que o comando será executado é informado. Entre as palavras chave FOR e LOOP temos o esquema que controla o loop. FOR CONTADOR IN [REVERSE] VALOR_INICIAL_DO_CONTADOR..VALOR_FINAL_DO_CONT ADOR LOOP --Comandos que serão executados END LOOP;
  • 16.
    OS LAÇOS DEREPETIÇÃO O CONTADOR controlará o numero de vezes que o comando será executado dentro de um intervalo de valores entre o VALOR_INICIAL_DO_CONTADOR e o VALOR_FINAL_DO_CONTADOR (este intervalo é indicado pelo símbolo “..”). A cada vez que os comandos são executados o valor do contador é incrementado. Por padrão o valor do contador é incrementado, mas podemos também fazer o inverso, utilizando a palavra chave REVERSE antes de especificar o intervalo de valores. O range pode ser especificado através de constantes, ou de variáveis, dependendo da necessidade e da lógica.
  • 17.
    OS LAÇOS DEREPETIÇÃO Os laços de repetição ajudam muito o desenvolvedor (independente da linguagem). No caso do PL/SQL é preciso que o desenvolvedor conheça a necessidade do objeto que está criando para que o seu loop funcione corretamente. Não custa lembrar que é sempre bom verificar se as variáveis que fazem parte do conjunto de comandos do loop estão declaradas corretamente, se a regra de negócio está sendo respeitada, se a condição de saída do loop em algum momento será satisfeita entre outras verificações.
  • 18.
    OS LAÇOS DEREPETIÇÃO Práticar !