sql >> Base de Datos >  >> RDS >> Oracle

Método de recopilación:procedimiento de recorte en la base de datos de Oracle

Bienvenido de nuevo al último tutorial de la serie PL/SQL Collection. La serie de tutoriales en video más larga hasta ahora en el canal. En este tutorial, aprenderemos sobre el último procedimiento de recopilación de PL/SQL, que es el procedimiento TRIM en Oracle Database.

¿Qué es el método de recopilación PL/SQL TRIM?

El método de colección TRIM en Oracle db es un procedimiento sobrecargado mediante el cual puede eliminar uno o más elementos del final de una colección.

¿De cuántas maneras podemos llamar al procedimiento TRIM del método de recopilación en Oracle Database?

Como el método de recopilación PL/SQL TRIM es un procedimiento sobrecargado, podemos llamarlo de dos formas diferentes. Estas dos llamadas diferentes del procedimiento TRIM son:

  1. TRIM:procedimiento de recorte sin parámetro.

Si usamos el procedimiento TRIM sin ningún parámetro, eliminará solo un elemento del final de la colección.

  1. TRIM:procedimiento de recorte con un parámetro.

El procedimiento TRIM llamado al pasar un argumento eliminará la cantidad de elementos del final de la colección según lo especificado por el parámetro. Ese parámetro debe ser un número entero válido. Además, no debe ser mayor que el número máximo de elementos que tiene tu colección.

Información:el procedimiento de recorte generará un error si se intenta recortar el espacio por debajo de cero elementos.

¿Podemos usar el método de recopilación PL/SQL TRIM con los tres tipos de recopilaciones?

Lamentablemente no, no podemos. Similar al procedimiento de recopilación PL/SQL EXTEND, el procedimiento TRIM solo se puede usar con la recopilación de tablas anidadas y VARRAY. Sin embargo, no podemos usarlo con matrices asociativas.

¿Qué sucederá si usamos el procedimiento de recopilación PL/SQL TRIM con una matriz asociativa?

Si el método de recopilación Trim de las versiones de la base de datos de Oracle se utiliza con una matriz asociativa, entonces obtendrá un error de tiempo de compilación .

¿Cuál es la especificación del Procedimiento Trim en Oracle Database?

La especificación del procedimiento de recopilación TRIM es:

PROCEDURE TRIM (n PLS_INTEGER:= 1);

Si n es NULL, trim no hará nada.

Te escuché decir en el video que también podemos obtener SUBSCRIPT_BEYOND_COUNT excepción?

Sí, el método de recopilación PL/SQL TRIM generará la excepción SUBSCRIPT_BEYOND_COUNT. Si hay un intento de recortar más elementos de los que realmente existen en la colección.

Puede encontrar el ejemplo de esta excepción que demostré en el video más adelante en este blog. Si quieres ver el video, aquí lo tienes. Si no es así, siéntete libre de desplazarte hacia abajo.

¿Existen otras excepciones asociadas con el método de recopilación PL/SQL Trim que debamos conocer?

Sí, hay una excepción más asociada con el procedimiento TRIM y es la excepción COLLECTION_IS_NULL.

Siempre que aplique el procedimiento de recopilación TRIM a una tabla anidada no inicializada o VARRAY, el compilador generará la excepción COLLECTION_IS_NULL.

¿Podemos usar los procedimientos TRIM y DELETE juntos?

No, no podemos usar las colecciones TRIM y DELETE juntos. Usarlos entre sí producirá resultados inesperados.

Piense en un escenario en el que haya ELIMINADO un elemento situado al final de una variable VARRAY y luego aplique el procedimiento TRIM en el mismo. ¿Puedes adivinar la cantidad de elementos que puedes haber eliminado? Puede confundirse al creer que se han eliminado dos elementos, sin embargo, el hecho es que solo se ha eliminado uno. TRIM actúa sobre el marcador de posición dejado por el procedimiento DELETE.

Para evitar estos resultados confusos y desconcertantes, el soporte de la base de datos de Oracle recomienda encarecidamente que estos dos procedimientos se utilicen exclusivamente en una colección determinada.

¿Qué pasa con los ejemplos? ¿Los estamos haciendo en este blog o no?

Claro, definitivamente haremos los ejemplos en este blog. De hecho, estaba a punto de mostrarles la demostración de cada una de las llamadas TRIM del procedimiento PL/SQL Collection que mencionamos anteriormente. Aquí vamos:

1. Procedimiento de recopilación PL/SQL TRIM sin parámetro.

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. Procedimiento de recopilación TRIM con parámetro.

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. Procedimiento de recopilación PL/SQL TRIM SUBSCRIPT_BEYOND_COUNT excepción.

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;
/

La excepción SUBSCRIPT_BEYOND_COUNT ocurre cuando pasamos un argumento mayor que el número total de elementos de la colección. En el ejemplo anterior, la colección que usamos es una tabla anidada con el nombre 'my_nestedTable' que tiene 5 elementos numéricos almacenados. Sin embargo, en la llamada al procedimiento le indicamos al compilador que TRIM 6 elementos, lo que es definitivamente imposible, por lo que en este caso el compilador genera la excepción SUBSCRIPT_BEYOND_COUNT.

4. Procedimiento de recopilación TRIM con 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;
/

Ese es el tutorial que explica los conceptos del procedimiento TRIM del método de recopilación PL/SQL en la base de datos Oracle.

Espero que les haya gustado. Conéctese conmigo en mi página de Facebook para obtener más actualizaciones e información sobre los conceptos de Oracle Database. ¡Gracias y que tengas un gran día!