Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Instrução FORALL com limite inferior e superior no banco de dados Oracle

Instrução FORALL com cláusula de limite inferior e superior


No tutorial anterior, aprendemos que existem três cláusulas vinculadas que podemos usar com a instrução FORALL para otimizar as consultas DML. A partir dessas três cláusulas vinculadas, exploraremos a primeira, ou seja, Lower e Upper Bound neste tutorial.

O que é a cláusula de limite inferior e superior da instrução FORALL?


Como o nome sugere, com a cláusula Lower &Upper Bound temos que especificar o intervalo válido de números de índice consecutivos da coleção.

Existe alguma regra para usar a cláusula Lower &Upper Bound com a instrução FORALL?


A cláusula Lower &Upper Bound só pode ser usada quando a coleção que você está referenciando em sua instrução DML for Dense . Se a coleção de referência for esparsa, talvez você queira usar outras cláusulas vinculadas que discutiremos nos tutoriais futuros.

Para que seu programa seja executado com sucesso, você precisa ter certeza de que seguiu todas as regras da instrução FORALL junto com a regra acima mencionada da cláusula de limite inferior e superior. Saiba mais sobre a declaração FORALL aqui.

Vamos fazer um exemplo de instrução FORALL com cláusula Lower &Upper Bound no Oracle Database.


Mas antes de pular para o exemplo, precisamos entender uma coisa; A instrução FORALL faz o mesmo trabalho que a cláusula de coleta em massa, mas de maneira inversa. Por exemplo, com a coleta em massa estávamos buscando os dados das tabelas e armazenando-os na coleção, mas agora com a instrução FORALL vamos buscar os dados da coleção e armazená-los na tabela.

Nesta demonstração, faremos três coisas para entender o conceito da instrução FORALL com a cláusula Lower &Upper Bound. Essas três coisas são:
  1. Crie uma tabela.


Primeiro vamos criar uma tabela. Usaremos esta tabela para despejar os dados que buscaremos da coleção.
  1. Crie e preencha a coleção.


Esta etapa é opcional se você já tiver uma coleção com alguns dados. Se você não me seguir, então. Para a demonstração, criarei e preencherei uma coleção.
  1. Escreva a declaração FORALL.


Depois de ter sua tabela e coleção prontas, escreva a instrução FORALL. Para a demonstração, escreverei uma instrução FORALL que buscará os dados da coleção e os armazenará na tabela. Isso também será uma demonstração da instrução FORALL com INSERT DML.

Vamos fazer o exemplo da instrução PL/SQL FORALL com limite inferior e superior.
SET SERVEROUTPUT ON;
CREATE TABLE tut_77 (
    Mul_tab    NUMBER(5)
);

Essa será a nossa tabela que conterá os dados. Em seguida, escreveremos o bloco PL/SQL.
DECLARE
	-- Declare the collection
    TYPE My_Array IS TABLE OF NUMBER INDEX BY PLS_INTEGER;
    col_var My_Array;
	--Declare a variable for holding the total number of records of the table
    tot_rec NUMBER;
BEGIN
    --Populate the collection
    FOR i IN 1..10 LOOP
        col_var (i) := 9*i;
    END LOOP;
    -- Write the FORALL statement.
    FORALL idx IN 1..10
        INSERT INTO tut_77 (mul_tab)
        VALUES (col_var (idx));
    --Get the total number of records from the table     
    SELECT count (*) INTO tot_rec FROM tut_77;
    DBMS_OUTPUT.PUT_LINE ('Total records inserted are '||tot_rec);
END;
/

Explicação da Seção de Declaração


Na seção de declaração deste código declaramos um array associativo com o nome “my_Array” junto com sua variável de coleção. Também uma variável extra com o nome tot_rec do tipo de dados Number. Essa variável conterá o número total de registros armazenados em nossa tabela.

Na seção de execução, fizemos três tarefas. Em primeiro lugar, usando o loop FOR, preenchemos nossa coleção com a tabuada de 9. Em segundo lugar, usando a instrução FORALL, pegamos os dados da coleção e os armazenamos na tabela que criamos. Em terceiro lugar, usando a variável tot_rec com a instrução SELECT-INTO, exibimos de volta o número total de linhas armazenadas na tabela.

Eu também fiz um vídeo sobre o mesmo tópico onde eu expliquei este código acima linha por linha em detalhes. Sugiro que verifique.



Esse é o tutorial sobre a instrução PL/SQL FORALL com cláusula Lower &Upper Bound no Oracle Database. Espero que tenha gostado de assistir. Por favor, certifique-se de curtir e compartilhar este blog com seus amigos em suas mídias sociais. Você pode me encontrar na minha página do Facebook também.

Obrigado e tenha um ótimo dia.