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

Méthode de collecte :procédure EXTEND dans la base de données Oracle

Après la méthode de collecte PL/SQL DELETE, la procédure EXTEND dans la base de données Oracle est la deuxième sur la liste. Nous avons utilisé cette procédure maintes et maintes fois, mais nous n'avons jamais eu la chance de l'explorer en détail. J'ai donc décidé de dédier tout le blog à cette méthode de Collection. Alors asseyez-vous et profitez du blog.

Si vous débutez avec PL/SQL et que vous ne savez pas ce que sont les procédures, nous avons un tutoriel pour vous. Cliquez ici et apprenez tout sur les procédures PL/SQL dans Oracle Database.

Qu'est-ce que la méthode de collecte PL/SQL EXTEND ?

Semblable à DELETE, la méthode de collection EXTEND est une procédure PL/SQL surchargée qui est utilisée pour ajouter des éléments à la collection.

De combien de façons pouvons-nous appeler la procédure EXTEND dans Oracle Database ?

La procédure de collecte PL/SQL est une procédure surchargée. Par conséquent, cela signifie que nous appelons cette même procédure de différentes manières. Ces différentes manières d'appeler la procédure de collecte EXTEND sont -

  1. Extend :appel de procédure d'extension sans aucun argument.

L'appel de la procédure de collecte PL/SQL Extend sans aucun argument s'ajoutera un seul élément NULL à la collection.

  1. Extend (n) :étend l'appel de procédure avec un argument.

Procédure de collecte Étendre avec un argument ajoutera le nombre d'éléments NULL que vous avez mentionnés comme argument de la procédure . Mais n'oubliez pas que l'argument doit être une valeur entière valide.

  1. Extend (n, v) :appel de procédure d'extension avec deux arguments.

Dans ce cas, le premier argument indique le nombre d'éléments qui sera annexé à la collection. De plus t le deuxième argument est le numéro d'index. De plus, sa valeur sera copiée et attribuée à chacun des éléments nouvellement ajoutés de la collection. Cette forme de EXTEND est requise pour les collections avec des "éléments non nuls".

Pouvons-nous utiliser la méthode de collecte PL/SQL EXTEND avec les trois types de collections ?

Non, la méthode de collecte EXTEND ne peut être appliquée qu'aux tables imbriquées et aux VARRAY de collection. De plus, EXTEND ne peut pas être utilisé avec les tableaux associatifs de collection.

Pouvez-vous nous montrer la spécification de la procédure EXTEND de la méthode de collecte dans la base de données Oracle ?

Bien sûr, pourquoi pas! Voici les spécifications surchargées de la méthode de collecte PL/SQL EXTEND —

Procédure EXTEND avec un argument :

PROCEDURE EXTEND (n pls_integer := 1);

Méthode de collecte EXTEND avec deux arguments :

PROCEDURE EXTEND (n pls_integer, v pls_integer);

Quand devons-nous utiliser la méthode de collecte EXTEND dans notre code ?

Lorsque vous avez une collection (table imbriquée ou VARRAY) dans votre code qui n'est pas initialisée avec un nombre suffisant d'éléments. Dans ce cas, vous devez d'abord utiliser la méthode de collecte PL/SQL EXTEND.

Quelles sont les exigences de la méthode de collecte PL/SQL EXTEND ?

Déclarer, définir et initialiser sont les trois étapes que nous devons suivre lorsque nous travaillons avec la collection dans Oracle Database. Mais avant de stocker les données dans l'index, nous devons créer un emplacement mémoire pour celles-ci. Par conséquent, la procédure PL/SQL Collection EXTEND nous aide à créer cet emplacement mémoire pour ces données.

Et si nous avons supprimé ou raccourci la fin de la collection ?

Dans ce cas, la méthode de collecte PL/SQL EXTEND ignorera les éléments supprimés lorsqu'elle attribuera un nouvel index.

Que se passe-t-il si j'applique la méthode de collecte EXTEND à une table imbriquée ou VARRAY non initialisée ?

Si la méthode de collecte PL/SQL EXTEND est appliquée à une collection non initialisée, elle affichera un COLLECTION_IS_NULL exception.

Et si j'essaie d'EXTENDER un VARRAY au-delà de sa limite définie ?

Si la méthode de collecte EXTEND est utilisée avec VARRAY pour l'étendre au-delà de sa limite définie, vous devrez faire face à une autre exception qui est SUBSCRIPT_BEYOND_LIMIT.

Hé Manish ! Verrons-nous un jour un exemple de cette méthode de collecte EXTEND ?

Oui, nous allons certainement faire la démonstration de chacun des appels EXTEND de la procédure PL/SQL Collection que nous avons mentionnés ci-dessus. En plus de l'appel de procédure d'extension avec VARRAY.

1. Procédure de collecte PL/SQL EXTEND sans argument.

SET SERVEROUTPUT ON;
DECLARE
    TYPE my_nestedTable IS TABLE OF number;
    nt_obj  my_nestedTable := my_nestedTable();
BEGIN
    nt_obj.EXTEND;
    nt_obj(1) := 10;
    DBMS_OUTPUT.PUT_LINE ('Data at index 1 is '||nt_obj(1));
END;
/

2. Procédure de collecte EXTEND avec un argument.

SET SERVEROUTPUT ON;
DECLARE
    TYPE my_nestedTable IS TABLE OF number;
    nt_obj  my_nestedTable := my_nestedTable();
BEGIN
    nt_obj.EXTEND(3);
    nt_obj(1) := 10;
    nt_obj(2) := 20;
    nt_obj(3) := 30;
    DBMS_OUTPUT.PUT_LINE ('Data at index 1 is '||nt_obj(1));
    DBMS_OUTPUT.PUT_LINE ('Data at index 2 is '||nt_obj(2)); 
    DBMS_OUTPUT.PUT_LINE ('Data at index 3 is '||nt_obj(3));
END;
/

3. Procédure de collecte PL/SQL EXTEND avec deux arguments.

SET SERVEROUTPUT ON;
DECLARE
    TYPE my_nestedTable IS TABLE OF number;
    nt_obj  my_nestedTable := my_nestedTable();
BEGIN
    nt_obj.EXTEND;
    nt_obj(1) := 28;
    DBMS_OUTPUT.PUT_LINE ('Data at index 1 is '||nt_obj(1));
    nt_obj.EXTEND(5,1);
    DBMS_OUTPUT.PUT_LINE ('Data at index 4 is '||nt_obj(4));
END;
/

4. Procédure de collecte EXTEND (sans argument) avec VARRAY

SET SERVEROUTPUT ON;
DECLARE
    TYPE my_Varray IS VARRAY (5) OF NUMBER;
    vry_obj my_Varray := my_Varray();
BEGIN
    vry_obj.EXTEND;
    vry_obj(1) := 10;
    DBMS_OUTPUT.PUT_LINE('Data at index 1 is '||vry_obj(1));
END;
/

Chaque LOC de tout ce qui précède (sauf le 4) est expliqué en détail dans le didacticiel vidéo sur notre chaîne YouTube.

J'espère que nous avons discuté de toutes les questions possibles sur la méthode de collecte PL/SQL EXTEND auxquelles vous pourriez être confronté lors de votre examen de certification Oracle db ainsi que lors de votre entretien. De plus, si vous avez des doutes sur les certifications, vous pouvez vous référer à notre guide d'examen de certification Oracle Database.