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

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

Procédure SUPPRIMER dans la base de données Oracle

Comme indiqué dans l'introduction aux méthodes de collecte, nous avons sept fonctions de collecte et 3 procédures de collecte. Nous avons donc au total 10 méthodes de collecte parmi lesquelles nous avons déjà discuté de 7 fonctions de collecte jusqu'à présent. Ainsi, aujourd'hui, dans ce didacticiel, nous aborderons la première procédure de collecte PL/SQL qui est la procédure DELETE dans Oracle Database.

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

La méthode de collection DELETE est une procédure surchargée qui supprime des éléments de la collection.

Qu'entendez-vous par une procédure surchargée ?

Vous avez bien entendu. La méthode de collecte PL/SQL DELETE est une procédure surchargée. Ce qui signifie que vous pouvez utiliser la même procédure de trois manières différentes . Ces trois manières différentes sont -

  • SUPPRIMER :Appel de procédure simple sans aucun paramètre. Ainsi, si la procédure PL/SQL Collection DELETE est utilisée sans aucun paramètre, elle supprimera tous les éléments de la collection .
  • SUPPRIMER (numéro-index ) :Appel de procédure avec un seul paramètre. Ce paramètre unique est le numéro d'index valide de la collection. La procédure de collecte DELETE appelée en passant un numéro d'index valide supprimera l'élément de l'index spécifique .
  • SUPPRIMER (index de début, index de fin )  : Appel de procédure avec deux paramètres. Cette façon d'appeler une procédure DELETE est appelée Suppression de plage . De cette façon, vous devez spécifier deux index. Et la procédure supprime la plage d'éléments qui se situent entre l'index de départ et l'index de fin .

Si la collection est un tableau associatif indexé par une chaîne, l'index de début et l'index de fin sont des chaînes ; sinon, les index de début et de fin sont des entiers.

Pouvons-nous utiliser la procédure DELETE dans Oracle Database avec toutes les collections ?

Oui, la méthode de collecte DELETE peut être utilisée pour les trois types de collections. Il s'agit des tableaux imbriqués, des VARRAY et des tableaux associatifs.

Attendez ! Mais si nous utilisons la procédure DELETE avec VARRAY, cela ne fera-t-il pas une collection clairsemée ?

Comme VARRAY n'est pas une collection clairsemée, nous ne pouvons donc pas en supprimer des lignes individuelles. De plus, le seul appel de procédure que nous pouvons exécuter avec VARRAY est le premier. Qui est la méthode de collection DELETE sans aucun argument qui supprime tous les éléments de la collection. La seule façon de supprimer une ligne individuelle d'un VARRAY est de la couper à partir de sa fin à l'aide d'une autre procédure appelée TRIM.

Peut-on s'attendre à une exception avec la méthode de collecte DELETE ?

Oui, il existe une exception associée à la méthode de collecte PL/SQL DELETE. Si la procédure DELETE est appliquée à une table imbriquée non initialisée et à VARRAY, elle lève une exception "Collection_is_Null".

Exemples de méthode de collecte PL/SQL DELETE.

Voyons quelques exemples de chacun des appels de procédure DELETE mentionnés ci-dessus.

Exemple 1 :Appel de procédure simple sans argument.

DECLARE
    TYPE my_nested_table IS
        TABLE OF NUMBER;
    var_nt my_nested_table := my_nested_table(2,4,6,8,10,12,14,16,18,20);
BEGIN

    --Range Delete
    var_nt.DELETE;
    FOR i IN 1..var_nt.LAST LOOP
        IF var_nt.EXISTS(i) THEN
            DBMS_OUTPUT.PUT_LINE('Value at Index ['||i||'] is '|| var_nt(i));
        END IF;
    END LOOP;
END;
/

L'appel de la procédure de collection DELETE sans aucun argument supprimera tous les éléments de la collection sur laquelle elle s'applique. De même, dans l'exemple ci-dessus, nous avons une table imbriquée avec le nom "my_nested_table" sur laquelle nous avons appliqué la procédure DELETE. Ainsi, en cas d'exécution réussie, l'appel de procédure supprimera tous les 10 éléments numériques qui y sont stockés.

Lecture suggérée :Comment créer une table imbriquée locale au bloc PL/SQL.

Exemple 2 :Appel de procédure avec un seul paramètre

DECLARE
    TYPE my_nested_table IS
        TABLE OF NUMBER;
    var_nt my_nested_table := my_nested_table(2,4,6,8,10,12,14,16,18,20);
BEGIN
    DBMS_OUTPUT.PUT_LINE('After Deleted');
    --Delete Specific Index
    var_nt.DELETE(5);
    IF var_nt.EXISTS(5) THEN
            DBMS_OUTPUT.PUT_LINE('Value at Index [5] is '|| var_nt(5));
    ELSE
        DBMS_OUTPUT.PUT_LINE('Data is Deleted');
    END IF;
END;
/

Ce paramètre unique est le numéro d'index valide de la collection. De plus, la procédure de collecte DELETE appelée en passant un numéro d'index valide supprimera l'élément de l'index spécifique. Ainsi, dans l'exemple ci-dessus, nous avons spécifié 5 comme argument de la méthode de collecte PL/SQL DELETE. Ainsi, en cas d'exécution réussie, l'appel de procédure supprimera l'élément de la collection qui est stocké à l'index 5.

Exemple 3 :Appel de procédure avec deux paramètres.

DECLARE
    TYPE my_nested_table IS
        TABLE OF NUMBER;
    var_nt my_nested_table := my_nested_table(2,4,6,8,10,12,14,16,18,20);
BEGIN

    --Delete Range
    var_nt.DELETE(2,6);
    FOR i IN 1..var_nt.LAST LOOP
        IF var_nt.EXISTS(i) THEN
            DBMS_OUTPUT.PUT_LINE('Value at Index ['||i||'] is '|| var_nt(i));
        END IF;
    END LOOP;
END;
/

Cette façon d'appeler la procédure DELETE est appelée suppression de plage. Ici, vous devez spécifier deux index et la procédure supprime la plage d'éléments qui se situent entre l'index de départ et l'index de fin. Dans l'exemple ci-dessus, nous définissons l'index de départ sur 2 et l'index de fin sur 6. Cela signifie qu'à l'exécution, l'appel de procédure DELETE supprimera tous les éléments qui se trouvent dans cette plage.

Allez-y et copiez les codes ci-dessus dans votre développeur SQL et exécutez-les vous-même pour voir quels sont les résultats.

Vous pouvez également regarder le didacticiel vidéo sur le même sujet pour une explication en direct de tous les exemples ci-dessus.

C'est le tutoriel sur la méthode de collecte PL/SQL DELETE dans Oracle Database. J'espère que vous avez apprécié la lecture et appris quelque chose de nouveau. Assurez-vous de partager ce blog sur vos réseaux sociaux. Rejoignez-moi également sur ma page Facebook pour des concepts plus intéressants de PL/SQL.

Merci et bonne journée !