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

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

Bienvenue dans le dernier didacticiel de la série PL/SQL Collection. La plus longue série de tutoriels vidéo à ce jour sur la chaîne. Dans ce tutoriel, nous allons découvrir la dernière procédure de collecte PL/SQL qui est la procédure TRIM dans Oracle Database.

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

La méthode de collecte TRIM dans Oracle db est une procédure surchargée à l'aide de laquelle vous pouvez supprimer un ou plusieurs éléments de la fin d'une collection.

De combien de façons pouvons-nous appeler la procédure TRIM de la méthode de collecte dans Oracle Database ?

Comme la méthode de collecte PL/SQL TRIM est une procédure surchargée, nous pouvons donc l'appeler de deux manières différentes. Ces deux appels différents de la procédure TRIM sont :

  1. TRIM :procédure Trim sans paramètre.

Si nous utilisons la procédure TRIM sans aucun paramètre, elle ne supprimera qu'un seul élément de la fin de la collection.

  1. TRIM :procédure de découpage avec un paramètre.

La procédure TRIM appelée en passant un argument supprimera le nombre d'éléments de la fin de la collection comme spécifié par le paramètre. Ce paramètre doit être un nombre entier valide. De plus, il ne doit pas être supérieur au nombre maximum d'éléments de votre collection.

Info :la procédure de découpage génère une erreur en cas de tentative de découpage de l'espace en dessous de zéro élément.

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

Malheureusement non, nous ne pouvons pas. Semblable à la procédure de collecte PL/SQL EXTEND, la procédure TRIM ne peut être utilisée qu'avec des tables imbriquées de collecte et des VARRAY. Cependant, nous ne pouvons pas l'utiliser avec les tableaux associatifs.

Que se passera-t-il si nous utilisons la procédure de collecte PL/SQL TRIM avec un tableau associatif ?

Si la méthode de collecte Trim des versions de la base de données Oracle est utilisée avec un tableau associatif, vous obtiendrez une erreur de temps de compilation .

Quelle est la spécification de la procédure Trim dans la base de données Oracle ?

La spécification de la procédure de collecte TRIM est :

PROCEDURE TRIM (n PLS_INTEGER:= 1);

Si n est NULL alors trim ne fera rien.

Je vous ai entendu dire en la vidéo que nous pouvons également obtenir l'exception SUBSCRIPT_BEYOND_COUNT ?

Oui, la méthode de collecte PL/SQL TRIM déclenchera l'exception SUBSCRIPT_BEYOND_COUNT. S'il y a une tentative de découper plus d'éléments qu'il n'en existe réellement dans la collection.

Vous pouvez trouver l'exemple de cette exception que j'ai démontré dans la vidéo plus loin dans ce blog. Si vous voulez regarder la vidéo, alors la voici. Sinon, n'hésitez pas à faire défiler vers le bas.

Existe-t-il d'autres exceptions associées à la méthode de collecte PL/SQL Trim que nous devrions connaître ?

Oui, il y a une autre exception associée à la procédure TRIM et c'est l'exception COLLECTION_IS_NULL.

Chaque fois que vous appliquez la procédure de collecte TRIM à une table imbriquée ou VARRAY non initialisée, le compilateur lèvera l'exception COLLECTION_IS_NULL.

Pouvons-nous utiliser les procédures TRIM et DELETE ensemble ?

Non, nous ne pouvons pas utiliser les procédures TRIM et DELETE des collections ensemble. Les utiliser les uns avec les autres produira des résultats inattendus.

Pensez à un scénario où vous avez SUPPRIMÉ un élément situé à la fin d'une variable VARRAY et appliquez ensuite la procédure TRIM sur le même. Pouvez-vous deviner le nombre d'éléments que vous avez supprimés ? Vous pourriez être confus en pensant que deux éléments ont été supprimés, mais le fait est qu'un seul a été supprimé. TRIM agit sur l'espace réservé laissé par la procédure DELETE.

Afin d'éviter ces résultats déroutants et déroutants, le support de la base de données Oracle recommande fortement que ces deux procédures soient utilisées exclusivement sur une collection donnée.

Qu'en est-il des exemples ? Est-ce qu'on les fait dans ce blog ou pas ?

Bien sûr, nous allons certainement faire les exemples de ce blog. En fait, j'étais sur le point de vous montrer la démonstration de chacun des appels TRIM de la procédure PL/SQL Collection que nous avons mentionnés ci-dessus. C'est parti :

1. Procédure de collecte PL/SQL TRIM sans paramètre.

SET SERVEROUTPUT ON;
DECLARE
    TYPE my_nestedTable IS TABLE OF number;
    nt_obj  my_nestedTable := my_nestedTable(1,2,3,4,5);
BEGIN
    nt_obj.TRIM;
    DBMS_OUTPUT.PUT_LINE ('After TRIM procedure');
    FOR i IN 1..nt_obj.COUNT
    LOOP
        DBMS_OUTPUT.PUT_LINE (nt_obj (i));
    END LOOP;
END;
/ 

2. Procédure de collecte TRIM avec paramètre.

SET SERVEROUTPUT ON;
DECLARE
    TYPE my_nestedTable IS TABLE OF number;
    nt_obj  my_nestedTable := my_nestedTable(1,2,3,4,5);
BEGIN
    nt_obj.TRIM (3);
    DBMS_OUTPUT.PUT_LINE ('After TRIM procedure');
    FOR i IN 1..nt_obj.COUNT
    LOOP
        DBMS_OUTPUT.PUT_LINE (nt_obj(i));
    END LOOP;
END;
/

3. Procédure de collecte PL/SQL TRIM SUBSCRIPT_BEYOND_COUNT exception.

SET SERVEROUTPUT ON;
DECLARE
    TYPE my_nestedTable IS TABLE OF number;
    nt_obj  my_nestedTable := my_nestedTable(1,2,3,4,5);
BEGIN
    nt_obj.TRIM(6);
    DBMS_OUTPUT.PUT_LINE ('After TRIM procedure');
    FOR i IN 1..nt_obj.COUNT
    LOOP
        DBMS_OUTPUT.PUT_LINE (nt_obj(i));
    END LOOP;
END;
/

L'exception SUBSCRIPT_BEYOND_COUNT se produit lorsque nous passons un argument supérieur au nombre total d'éléments de la collection. Dans l'exemple ci-dessus, la collection que nous utilisons est une table imbriquée avec le nom 'my_nestedTable' qui contient 5 éléments numériques stockés. Cependant, dans l'appel de procédure, nous avons demandé au compilateur de TRIM 6 éléments, ce qui est définitivement impossible. Dans ce cas, le compilateur lève l'exception SUBSCRIPT_BEYOND_COUNT.

4. Procédure de collecte TRIM avec VARRAY.

SET SERVEROUTPUT ON;
DECLARE
 TYPE inBlock_vry IS VARRAY (5) OF NUMBER;
 vry_obj inBlock_vry := inBlock_vry(1, 2, 3, 4, 5);
BEGIN
    --TRIM without parameter
    vry_obj.TRIM;
    DBMS_OUTPUT.PUT_LINE ('After TRIM procedure');
    FOR i IN 1..vry_obj.COUNT
    LOOP
        DBMS_OUTPUT.PUT_LINE (vry_obj(i));
    END LOOP;
    --TRIM with Parameter
    vry_obj.TRIM (2);
    DBMS_OUTPUT.PUT_LINE ('After TRIM procedure');
    FOR i IN 1..vry_obj.COUNT
    LOOP
        DBMS_OUTPUT.PUT_LINE (vry_obj(i));
    END LOOP;
END;
/

Il s'agit du didacticiel expliquant les concepts de la procédure TRIM de la méthode de collecte PL/SQL dans Oracle Database.

J'espère que tu l'as aimé. Connectez-vous avec moi sur ma page Facebook pour plus de mises à jour et d'informations sur les concepts d'Oracle Database. Merci et bonne journée !