Oracle
 sql >> Base de données >  >> RDS >> Oracle

Instruction FORALL avec limite inférieure et supérieure dans la base de données Oracle

Instruction FORALL avec clause de limite inférieure et supérieure

Dans le didacticiel précédent, nous avons appris qu'il existe trois clauses liées que nous pouvons utiliser avec l'instruction FORALL pour optimiser les requêtes DML. À partir de ces trois clauses liées, nous explorerons la première, c'est-à-dire les limites inférieure et supérieure dans ce didacticiel.

Qu'est-ce que la clause Lower &Upper Bound de l'instruction FORALL ?

Comme son nom l'indique, avec la clause Lower &Upper Bound, nous devons spécifier la plage valide de numéros d'index consécutifs de la collection.

Existe-t-il une règle pour l'utilisation de la clause Lower &Upper Bound avec l'instruction FORALL ?

La clause Lower &Upper Bound ne peut être utilisée que lorsque la collection à laquelle vous faites référence dans votre instruction DML est Dense . Si la collection de référence est clairsemée, vous pouvez utiliser d'autres clauses liées dont nous parlerons dans les futurs didacticiels.

Afin d'exécuter votre programme avec succès, vous devez vous assurer que vous avez suivi toutes les règles de l'instruction FORALL ainsi que la règle mentionnée ci-dessus de la clause de limite inférieure et supérieure. En savoir plus sur la déclaration FORALL ici.

Faisons un exemple d'instruction FORALL avec clause Lower &Upper Bound dans Oracle Database.

Mais avant de sauter sur l'exemple, nous devons comprendre une chose ; L'instruction FORALL fait le même travail que la clause de collecte en bloc mais de manière inverse. Par exemple, avec la collecte en bloc, nous récupérions les données des tables et les stockions dans la collection, mais maintenant avec l'instruction FORALL, nous récupérons les données de la collection et les stockons dans la table.

Dans cette démonstration, nous ferons trois choses pour comprendre le concept d'instruction FORALL avec clause Lower &Upper Bound. Ces trois choses sont :

  1. Créer un tableau.

Nous allons d'abord créer un tableau. Nous utiliserons cette table pour vider les données que nous allons récupérer de la collection.

  1. Créer et remplir la collection.

Cette étape est facultative si vous avez déjà une collection avec des données. Si vous ne le faites pas, suivez-moi. Pour la démonstration, je vais créer et remplir une collection.

  1. Écrivez l'instruction FORALL.

Une fois que vous avez votre table et votre collection prêtes, écrivez la déclaration FORALL. Pour la démonstration, je vais écrire une instruction FORALL qui récupérera les données de la collection et les stockera dans la table. Ce sera également une démonstration de l'instruction FORALL avec INSERT DML.

Faisons l'exemple de l'instruction PL/SQL FORALL avec les limites inférieure et supérieure.

SET SERVEROUTPUT ON;
CREATE TABLE tut_77 (
    Mul_tab    NUMBER(5)
);

Ce sera notre table qui contiendra les données. Ensuite, nous allons écrire le bloc 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;
/

Explication de la section de déclaration

Dans la section déclaration de ce code, nous avons déclaré un tableau associatif avec le nom "my_Array" avec sa variable de collection. Également une variable supplémentaire avec le nom tot_rec du type de données Number. Cette variable contiendra le nombre total d'enregistrements stockés dans notre table.

Dans la section d'exécution, nous avons effectué trois tâches. Premièrement, en utilisant la boucle FOR, nous avons rempli notre collection avec la table de multiplication de 9. Deuxièmement, en utilisant l'instruction FORALL, nous avons pris les données de la collection et les avons stockées dans la table que nous avons créée. Troisièmement, en utilisant la variable tot_rec avec l'instruction SELECT-INTO, nous avons affiché le nombre total de lignes stockées dans la table.

J'ai également fait une vidéo sur le même sujet où j'ai expliqué en détail ce code ci-dessus ligne par ligne. Je vous suggère de le vérifier.

C'est le tutoriel sur l'instruction PL/SQL FORALL avec la clause Lower &Upper Bound dans Oracle Database. J'espère que vous avez aimé regarder. Assurez-vous d'aimer et de partager ce blog avec vos amis sur vos réseaux sociaux. Vous pouvez également me joindre sur ma page Facebook.

Merci et bonne journée.