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

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

Después del método de recopilación PL/SQL DELETE, el procedimiento EXTEND en la base de datos Oracle es el segundo en la lista. Hemos usado este procedimiento una y otra vez, pero nunca tuvimos la oportunidad de explorarlo en detalle. Por eso he decidido dedicar todo el blog a este método de Colección. Así que siéntate y disfruta del blog.

Si es nuevo en PL/SQL y no sabe qué son los procedimientos, tenemos un tutorial para usted. Haga clic aquí y aprenda todo sobre los procedimientos PL/SQL en Oracle Database.

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

Similar a DELETE, el método de colección EXTEND es un procedimiento PL/SQL sobrecargado que se usa para agregar elementos a la colección.

¿De cuántas maneras podemos llamar al procedimiento EXTEND en Oracle Database?

El procedimiento de recopilación de PL/SQL es un procedimiento sobrecargado. Por lo tanto, significa que llamamos a este mismo procedimiento de diferentes maneras. Estas diferentes formas de llamar al procedimiento de cobro EXTEND son:

  1. Extender:extender la llamada al procedimiento sin ningún argumento.

Llamar al procedimiento de recopilación PL/SQL Extend sin ningún argumento agregará un solo elemento NULL a la colección.

  1. Extender (n):extender la llamada al procedimiento con un argumento.

El procedimiento de recopilación Extend con un argumento añadirá la cantidad de elementos NULL que mencionó como argumento del procedimiento . Pero recuerde que el argumento debe ser un valor entero válido.

  1. Extender (n, v):extender la llamada al procedimiento con dos argumentos.

En este caso el primer argumento indica el número de elementos que se adjuntará a la colección. Además t El segundo argumento es el número de índice. Además, su valor se copiará y asignará a cada uno de los elementos nuevos de la colección. Esta forma de EXTEND es necesaria para colecciones con "elementos no nulos".

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

No, el método de recopilación EXTEND solo se puede aplicar a la recopilación de tablas anidadas y VARRAY. Además, EXTEND no se puede utilizar con matrices asociativas de colección.

¿Puede mostrarnos la especificación del procedimiento EXTEND del método de recopilación en Oracle Database?

¡Seguro Por qué no! Aquí están las especificaciones sobrecargadas del método de recopilación PL/SQL EXTEND —

EXTEND Procedimiento con un argumento:

PROCEDURE EXTEND (n pls_integer := 1);

Método de recopilación EXTEND con dos argumentos:

PROCEDURE EXTEND (n pls_integer, v pls_integer);

¿Cuándo debemos usar el método de recopilación EXTEND en nuestro código?

Cuando tiene una colección (ya sea una tabla anidada o VARRAY) en su código que no se inicializa con una cantidad suficiente de elementos. En ese caso, primero debe usar el método de recopilación PL/SQL EXTEND.

¿Cuál es el requisito del método de recopilación PL/SQL EXTEND?

Declarar, Definir e Inicializar son los tres pasos que tenemos que seguir mientras trabajamos con la colección en Oracle Database. Pero antes de almacenar los datos en el índice, debemos crear una ranura de memoria para ellos. En consecuencia, el procedimiento de recopilación PL/SQL EXTEND nos ayuda a crear esa ranura de memoria para esos datos.

¿Qué sucede si hemos eliminado o recortado el final de la colección?

En ese caso, el método de recopilación PL/SQL EXTEND omitirá los elementos eliminados cuando asigne un nuevo índice.

¿Qué ocurre si aplico el método de recopilación EXTEND a una tabla anidada o VARRAY sin inicializar?

Si se aplica el método de recopilación PL/SQL EXTEND a una recopilación no inicializada, mostrará un COLLECTION_IS_NULL excepción.

¿Y si trato de EXTENDIR un VARRAY más allá de su límite definido?

Si el método de recopilación EXTEND se usa con VARRAY para extenderlo más allá de su límite definido, tendrá que enfrentar otra excepción que es SUBSCRIPT_BEYOND_LIMIT.

¡Hola, Manish! ¿Veremos alguna vez un ejemplo de este método de recopilación EXTEND?

Sí, definitivamente haremos la demostración de cada una de las llamadas EXTEND del procedimiento de recopilación PL/SQL que mencionamos anteriormente. Además de la llamada a procedimiento extendido con VARRAY.

1. Procedimiento de recopilación PL/SQL EXTEND sin argumento.

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. Procedimiento de recopilación EXTEND con un argumento.

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. Procedimiento de recopilación PL/SQL EXTEND con dos argumentos.

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. Procedimiento de recopilación EXTEND (sin argumento) con 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;
/

Cada LOC de todos los anteriores (Excepto el 4) se explica en detalle en el Video Tutorial en nuestro canal de YouTube.

Espero que hayamos discutido todas las preguntas posibles sobre el método de recopilación PL/SQL EXTEND que podría enfrentar en su examen de certificación Oracle db, así como en su entrevista. Además, si tiene dudas sobre las certificaciones, puede consultar nuestra Guía de examen de certificación de la base de datos de Oracle.