Introducción a las colecciones PL / SQL

En primer lugar, al igual que otros lenguajes de programación modernos, PL / SQL también brinda la posibilidad a los programadores de usar colecciones PL / SQL. Entonces, en términos generales, la colección es una estructura de datos que tiene un grupo ordenado de elementos del mismo tipo de datos y se accede a estos elementos a través de índices de acuerdo con los requisitos específicos. Las colecciones de uso común en la mayoría de los lenguajes de programación son Arrays, Set, List y Queue, etc.

La colección PL / SQL ofrece muchas ventajas tanto para el programador como para el usuario mientras almacena y accede a datos de tipos de datos similares en una aplicación. Cuando existe la necesidad de procesar todos los datos a la vez o manejar una gran cantidad de datos, las colecciones PL / SQL son muy útiles. También reduce el tamaño y la velocidad de procesamiento mientras almacena los datos y accede a los elementos. Se puede acceder fácilmente a los elementos de las colecciones a través de bucles e índices. A diferencia de las matrices en otros lenguajes de programación, PL / SQL solo admite colecciones unidimensionales y los datos en las colecciones se identifican mediante los subíndices (también llamados índices en otros idiomas). Se accede a cada elemento y se procesa a través de este subíndice único.

Tipos de colecciones PL / SQL

Las colecciones PL / SQL son de 3 tipos que se dan a continuación con sintaxis:

Mesas anidadas

Una tabla anidada es una colección PL / SQL en la que el tamaño no es fijo. Por lo tanto, es como una matriz unidimensional, excepto por el hecho de que el tamaño se fija en las matrices y puede ser denso y escaso. El programador necesita extender la memoria cada vez antes de usarla usando EXTEND Subscript en la tabla Anidada comienza con un entero '1'.

Las tablas anidadas se encuentran en colecciones PL / SQL persistentes, lo que significa que pueden reutilizarse aún más tal como se almacenan en la base de datos. El programador también puede eliminar un elemento de matriz y hacer que la tabla sea escasa, lo que significa que las tablas anidadas pueden ser densas y dispersas. Las tablas anidadas se pueden declarar dentro del bloque PL / SQL o en el nivel de esquema.

Como no hay límite en el tamaño superior en las tablas anidadas, entran en la categoría de colecciones PL / SQL sin límites.

Sintaxis:

TYPE typ_name IS table of element_data_type;
Table_name typ_name;

Matrices de tamaño variable o VARRAY

VARRAY es la colección PL / SQL en la que el tamaño de la colección se fija como se define en su definición, por lo que los VARRAY se denominan Elementos limitados en matrices que se completan secuencialmente a partir del subíndice 1. A diferencia de las tablas anidadas, las matrices proporcionan menos flexibilidad ya que son densas solamente. Por lo tanto, el programador no puede eliminar ningún elemento intermedio, se elimina todo el varray o se puede recortar desde el final. Varrays tiene que ser accedido y almacenado secuencialmente. Se puede definir dentro del bloque PL / SQL o el nivel de esquema. Al igual que las tablas anidadas, las matrices pertenecen a la categoría de colecciones persistentes para que puedan reutilizarse y almacenarse en la base de datos.

Sintaxis:

TYPE typ_name IS VARRAY OF element_data_type;

Matrices asociativas

Como su nombre indica, las matrices asociativas se utilizan para mantener los valores en pares clave-valor. La clave utilizada puede ser una cadena o un tipo entero. Las matrices asociativas también se denominan tabla de índice por. Esta colección puede ser densa o escasa. En las matrices asociativas, el tamaño de la matriz no se fija al inicio y el programador no necesita inicializarlas antes de usarlo. Una matriz asociativa se incluye en la categoría de colecciones no persistentes, lo que significa que no se almacenan en la base de datos y no se pueden reutilizar, por lo que se definen dentro del bloque PL / SQL y se usan solo en esa sesión en particular. Estas matrices se encuentran en la categoría de colecciones ilimitadas.

Sintaxis:

TYPE typ_name IS TABLE OF element_data_type;

Métodos de recogida

PL / SQL proporciona algunos métodos predefinidos para facilitar el trabajo con colecciones. Algunos de los métodos se dan a continuación:

S.No.Nombre del métodoDescripción
1)CONTARDevuelve el número de elementos presentes en la colección.
2)PRIMERODevuelve el número de índice más pequeño (primero) en la colección para subíndices enteros
3)ÚLTIMODevuelve el número de índice más grande (último) en la colección para subíndices enteros.
4)EXISTE (n)Se utiliza para verificar si un elemento particular está presente en la colección o no. Devuelve VERDADERO si los enésimos elementos están presentes en la colección, FALSO si no.
5)ANTERIOR (n)Devuelve el número de índice que es el predecesor del índice (n) dado por el usuario en la colección.
6)SIGUIENTE (n)Devuelve el número de índice que es el sucesor del índice (n) proporcionado por el usuario en la colección.
7)PODARSe utiliza para eliminar elementos de la colección. TRIM elimina el último elemento de la colección y TRIM (n) elimina el último elemento n del final de la colección.
8)ELIMINARSe utiliza para eliminar todos los elementos de la colección dada. Establece el recuento de la colección en 0 después de eliminar todos los elementos.
9)BORRAR (m, n)Se utiliza en el caso de matrices asociativas y tablas indexadas para eliminar todos los elementos en el rango de m a n. Devuelve nulo si m es mayor que n.
10)LÍMITESe utiliza para verificar el tamaño máximo de la colección.

Excepciones de colección

A continuación se presentan algunas de las excepciones más probables que surgen al trabajar con colecciones.

Nombre de excepciónUn escenario en el que surgen excepciones
DATOS NO ENCONTRADOSSe produce una excepción cuando un subíndice que hace referencia a un elemento que se elimina y ya no existe.
VALOR_ERRORLa excepción ocurre cuando el valor de las columnas que intentan acceder no es convertible al tipo de clave o cuando un subíndice es nulo
COLLECTION_IS_NULLSurgen excepciones al trabajar en una colección automáticamente nula
SUBSCRIPT_BEYOND_CO UNTSe produce una excepción cuando un subíndice excede el recuento máximo de varios elementos en la colección.
SUBSCRIPT_OUTSIDE_LIM ITLa excepción surge cuando se intenta hacer referencia usando el número de índice que está fuera del rango legal.
TOO_MANY_ROWSUna excepción surge cuando una instrucción SELECT into devuelve más de 1 fila.

Ventajas de las colecciones en PL / SQL

Algunas de las ventajas de las colecciones PL / SQL se dan a continuación:

  • Además, una de las mayores ventajas de las colecciones es que mejora el rendimiento del sistema al almacenar en caché los datos estáticos a los que se debe acceder regularmente.
  • Lo más importante es que las colecciones son útiles mientras se trabaja con el gran conjunto de datos que tiene el mismo tipo de datos en el que el usuario necesita realizar múltiples operaciones DML.
  • Al usar la variable de colección única, podemos reducir el número múltiple de variables utilizadas para almacenar diferentes valores y, por lo tanto, guardar la memoria.
  • Realizar diferentes operaciones como almacenar y procesar datos se vuelve fácil a través de los métodos de recopilación de PL / SQL ya proporcionados.

Conclusión

A través de la descripción anterior, puede tener una idea de qué es la colección PL / SQL y los métodos que se pueden usar en las colecciones PL / SQL. Antes de usar cualquier tipo de colección PL / SQL en el programa, el desarrollador debe pensar profundamente sobre el escenario antes de elegir cualquier tipo. Aunque trabajar en colecciones PL / SQL no es difícil, pueden surgir ciertas excepciones en diferentes puntos que el programador debe conocer y saber cómo tratar con ellos.

Artículos recomendados

Esta es una guía para las colecciones PL / SQL. Aquí discutimos la sintaxis, los tipos, los métodos y las excepciones de las colecciones PL / SQL junto con las ventajas. También puede consultar los siguientes artículos para obtener más información:

  1. Cursores en PL / SQL
  2. Sentencia CASE en PL / SQL
  3. Preguntas de la entrevista de Oracle PL / SQL
  4. Comandos PL / SQL