pl sql collections nested table
Aprenda los conceptos básicos de PL SQL Collections, Collection Methods, Varray, Nested table y Associative Array con la ayuda de ejemplos de código:
En el Subprogramas PL / SQL tutorial de la Serie PL / SQL , aprendimos sobre procedimientos y funciones, diferentes métodos de paso de parámetros y cómo crear / eliminar procedimientos y funciones en PL / SQL.
En este artículo, discutiremos las colecciones PL SQL y conceptos relacionados. También explicaremos el concepto de Varrays, tablas anidadas y tablas indexadas que están disponibles en PL / SQL.
Además, exploraremos algunas de las excepciones y métodos de recopilación incorporados.
Lo que vas a aprender:
- Colecciones PL SQL
- Tablas anidadas en PL / SQL
- Matriz asociativa o tablas de índice
- Varrays en PL / SQL
- Conclusión
Colecciones PL SQL
Una colección es un grupo de elementos de tipos de datos homogéneos. Generalmente comprende matrices, listas, conjuntos, etc. Cada uno de los elementos tiene un subíndice particular que refleja su posición.
Las colecciones PL SQL son de los siguientes tipos:
- Matriz asociativa / tablas de índice
- Mesas anidadas.
- Varrays.
Las colecciones PL SQL se utilizan generalmente para el almacenamiento y manipulación de grandes cantidades de datos, utilizando la palabra clave BULK COLLECT en Oracle.
Métodos de recolección
Pl / SQL tiene algunos métodos integrados en la colección que se enumeran a continuación.
Sl. No. | Nombre | Descripciones |
---|---|---|
7 | siguiente (m) | Da el índice que sigue al mésimo índice. |
1 | contar | Da el número de elementos presentes en la colección. |
2 | límite | Verifica el tamaño de la colección. |
3 | existe (m) | Devuelve verdadero si el mth elemento presente en la colección de lo contrario devuelve falso. |
4 | primero | Da el número de índice inicial en la colección con un subíndice entero. |
5 | último | Da el número de índice final en la colección con un subíndice entero. |
6 | ampliar | Agrega el elemento NULL al final de la colección. |
8 | anterior (m) | Da el índice que precede al índice m. |
9 | podar | Elimina un elemento del final de la colección. |
10 | recortar (m) | Elimina m elementos del final de la colección. |
11 | Eliminar | Elimina todos los elementos de la colección, estableciendo el recuento en 0. |
12 | borrar (m) | Elimina mth elemento de la colección, si mth elemento es NULL, entonces no se realiza ninguna acción. |
13 | borrar (m, k) | Elimina el elemento de la posición mth a la kth. |
14 | extender (m) | Agrega el elemento m al final de la colección. |
15 | extender (m, k) | Agrega m copias del k-ésimo elemento al final de la colección. |
Excepciones de colección
Algunas de las excepciones de cobranza comunes son las siguientes:
- VALUE_ERROR: Esta excepción se lanza si un subíndice no se puede convertir al tipo de clave o es NULL. Esta excepción se genera normalmente si una clave es del rango de tipo PLS_INTEGER y el subíndice reside más allá de este rango.
- DATOS NO ENCONTRADOS: PL / SQL lanza esta excepción si una instrucción SELECT no recupera filas o un programa apunta a un elemento que se elimina en una tabla anidada. Esta excepción también puede ser provocada por un elemento que no está inicializado en una tabla indexada.
- COLLECTION_IS_NULL: PL / SQL lanza esta excepción si la colección es NULL por defecto.
- SUBSCRIPT_BEYOND_COUNT: Esta excepción se produce cuando un subíndice es mayor que el recuento total del número de elementos de la colección.
- SUBSCRIPT_OUTSIDE_LIMIT: Esta excepción se lanza cuando un subíndice está más allá del rango de umbral.
Tablas anidadas en PL / SQL
Las tablas anidadas son como una tabla de base de datos de una sola columna o una matriz unidimensional donde el tamaño de la matriz es dinámico. Su subíndice es de tipo numérico. Podemos convertir la tabla anidada en una variable dando a las filas un subíndice que comience con 1. Esta característica la hace similar en naturaleza a una matriz.
Una tabla anidada se puede guardar en una columna de una base de datos. También se puede utilizar para manipular operaciones SQL uniendo tablas. Dado que es como una matriz dinámica, el límite superior puede ser de cualquier tamaño.
Una tabla anidada puede tener características de colección densas y dispersas, lo que significa que cualquier elemento puede eliminarse aleatoriamente (haciéndolo disperso) con la ayuda del procedimiento DELETE. La eliminación de datos provoca una discontinuidad en el índice, pero la función NEXT ayuda a iterar a los siguientes subíndices. Dado que los datos se almacenan en forma de tabla, se pueden recuperar con la ayuda de instrucciones SELECT.
Se puede construir una tabla anidada a nivel de esquema o en bloque PL / SQL. Es como un objeto de base de datos al que se puede acceder dentro de la base de datos o subprograma.
Las diferencias entre Array y tabla anidada se enumeran a continuación:
- El tamaño de las tablas anidadas se puede aumentar de forma dinámica. El límite superior de una matriz es fijo, pero no para tablas anidadas.
- La matriz tiene subíndices consecutivos que la hacen densa. Sin embargo, una tabla anidada es densa en el momento de la creación, pero se vuelve escasa una vez que se eliminan los elementos intermedios.
Sintaxis de la tabla anidada:
|_+_|Aquí, 'escribe' es el especificador de tipo. 'elemento' es el tipo de datos.
Implementación de código con la tabla anidada:
|_+_|La salida del código anterior debe ser:
Matriz asociativa o tablas de índice
La tabla indexada se denomina comúnmente matriz asociativa. En términos de estructura, tanto la tabla indexada como las tablas anidadas son similares y tienen subíndices para acceder a los elementos.
Una matriz asociativa está representada por un par clave-valor. Cada una de las claves únicas se utiliza para identificar el valor en la matriz. El tipo de datos de la clave puede ser una cadena o un entero definido al crearlo. Se agrega una clave a la tabla de indexación simplemente asignando un valor por primera vez. Para modificar la misma entrada, tenemos que usar la misma clave.
La clave debe ser única, ya sea como clave principal en una tabla o combinando cadenas para desarrollar un valor único. Este tipo de colección tiene un tamaño de matriz que es dinámico y tiene características dispersas o densas. Una diferencia entre la tabla indexada y la tabla anidada es que la primera no se puede almacenar en la columna de la base de datos, pero la tabla anidada se puede almacenar.
Las matrices asociativas proporcionan un fácil mantenimiento del subíndice y se crean dentro de un bloque PL / SQL. Es como una tabla SQL donde los valores se obtienen con la ayuda de la clave primaria. Esto se usa generalmente para el almacenamiento temporal de datos y se puede usar en lugar de tablas SQL para evitar el tráfico de red y el almacenamiento en disco requerido por las tablas SQL.
Como las matrices asociativas no almacenan datos persistentes, no se pueden utilizar con sentencias SQL como SELECT e INSERT. Sin embargo, se pueden hacer interminables para una sesión de la base de datos declarando su tipo de datos como un paquete y definiéndolos dentro del cuerpo del paquete.
Sintaxis de la tabla indexada:
|_+_|Aquí el 'llave' es numérico. Puede ser BINARY_INTEGER o PLS_INTEGER. Su tipo de datos puede ser varchar, varchar2, long o string. La clave basada en varchar debe mencionarse con longitud.
'elemento' es el tipo de datos.
'Talla' es el número máximo de elementos. Es un número entero positivo.
'escribe' es el especificador de tipo.
Implementación de código con la tabla indexada:
|_+_|La salida del código anterior debe ser:
Varrays en PL / SQL
Los Varrays almacenan un número fijo de elementos y son como una matriz unidimensional. Sin embargo, el número de elementos se puede modificar en tiempo de ejecución. Es un conjunto consecutivo de elementos de tipos de datos similares. Se puede almacenar en una tabla de base de datos que se puede manejar con la ayuda de declaraciones SQL. Pero el proceso no es tan fácil y flexible como en una tabla anidada.
El tamaño máximo de Varray se define en su definición de tipo. Tiene una disposición de memoria una tras otra que comienza con 1 subíndice y la dirección de ubicación más baja apunta al elemento inicial y la dirección de ubicación más alta apunta al elemento final. Todos los elementos de un Varray se identifican con un índice.
Este tipo de colección tiene subíndices numéricos y tiene características densas. Por lo tanto, los elementos de la matriz no se pueden eliminar en el medio. O se debe eliminar todo el Varray o se puede recortar su final. Debido a sus características densas, tiene menos flexibilidad de uso.
El Varray se puede crear dentro de un bloque PL / SQL o en el nivel de esquema. Se trata como un objeto de base de datos al que se puede acceder dentro de la base de datos o dentro de un subprograma. Varray se usa con más frecuencia cuando conocemos el tamaño de la matriz. Debe inicializarse antes de usarlos y puede inicializarse con la ayuda de un constructor. Su valor es NULL cuando se declara y debe inicializarse antes de hacer referencia a sus elementos.
Sintaxis de Varray:
|_+_|Aquí,
'escribe' es el especificador de tipo.
'elemento' es el tipo de datos.
'Talla' es el número máximo de elementos en una matriz. Es un número entero positivo.
Declaración e inicialización de variables Varray
Después de crear un Varray, podemos declararlo de la forma que se describe a continuación:
Sintaxis:
|_+_|Aquí,
'nombre' es el nombre de Varray.
'Tipo_n' es el tipo de Varray.
'Tipo_n (...)' es el constructor de tipo Varray. Las listas de argumentos se mencionan con un separador de coma y son de tipo Varray.
Tenemos que inicializar una variable Varray antes de usarla, de lo contrario da un error de recopilación no inicializado. La inicialización se realiza de la forma que se describe a continuación.
Sintaxis:
|_+_|Esto inicializará la variable con cero elementos. Para completar elementos en las variables varray, la sintaxis es:
|_+_|Accediendo a Elementos de Varray
Se puede acceder a los elementos mediante el proceso que se describe a continuación:
nombre (m); donde m es el índice del elemento que comienza con 1 y termina con el recuento máximo del número de elementos de tipo Varray. En caso de que m esté más allá del rango de 1 y el recuento máximo del número de elementos, SUBSCRIPT_BEYOND_COUNT PL / SQL lanza una excepción.
El tamaño de Varray se puede modificar con la ayuda de la instrucción ALTER.
Implementación de código con ALTER.
|_+_|La salida del código anterior debería ser.
el mejor software para crear diagramas de flujo
Implementación de código con Varray:
|_+_|La salida del código anterior debe ser:
Diferencias entre Varrays y tablas anidadas
Las diferencias son las siguientes:
- Mientras trabajamos en un escenario en el que se conoce la cantidad de elementos y se organizan secuencialmente, generalmente se utilizan Varrays. Un Varray que se almacena en una base de datos mantiene sus subíndices y secuencia. Siempre se mantiene como un solo objeto. Considerando que, las tablas anidadas se utilizan cuando el recuento del número de elementos no está restringido.
- La mesa anidada tiene unas características escasas que le permiten sacar cualquier elemento de cualquier posición y no siempre del final. El orden y el subíndice de una tabla anidada no se mantienen cuando se almacena en la base de datos. Los elementos de Varray siempre se mantienen en secuencia.
Diferencias entre matrices asociativas y tablas anidadas
Las diferencias son las siguientes:
- Las tablas anidadas se pueden almacenar en una columna de la base de datos, pero las matrices asociativas no. Las tablas anidadas mantienen relaciones de datos adecuadas que se almacenan de forma persistente.
- Los arreglos asociativos son buenos para tablas de búsqueda pequeñas donde la colección se puede construir en la memoria cada vez que se inicializa un paquete o se llama a un procedimiento. Son una buena opción cuando no se conoce el tamaño de antemano. Los valores de índice de una matriz asociativa son flexibles ya que los subíndices de esta matriz no están en secuencia o pueden ser negativos o una cadena en lugar de un número.
Preguntas y respuestas frecuentes
P # 1) ¿Por qué usamos colecciones en PL / SQL?
Responder: Hay tres tipos de colecciones: tablas anidadas, matrices asociativas y varrays. Las tablas anidadas pueden almacenar una cantidad aleatoria de elementos. Varrays puede almacenar un número fijo de elementos y las matrices asociativas nos permiten buscar elementos con números y cadenas aleatorios.
P # 2) ¿Qué es la tabla anidada en PL / SQL?
Responder: Una mesa anidada es unidimensional por naturaleza y su tamaño no permanece fijo. Se puede acceder a ellos en bloques SQL y PL / SQL. Se puede utilizar en registros, definiciones de objetos y tablas.
P # 3) ¿Qué es una colección masiva en Oracle PL / SQL?
Responder: Una colección masiva es un método de obtener datos cuando el motor PL / SQL le informa al motor SQL que acumule varias filas a la vez y las almacene en una colección.
P # 4) ¿Por qué la recolección masiva es más rápida en Oracle?
Responder: La recopilación masiva mejora el rendimiento al reducir la interacción entre el motor PL / SQL y la base de datos.
P # 5) ¿Qué es Varray en PL / SQL?
Responder: Es una estructura de datos PL / SQL que se utiliza para almacenar una colección homogénea de elementos del mismo tipo de datos en una secuencia. Se utiliza principalmente para almacenar un conjunto ordenado de datos.
P # 6) ¿Podemos eliminar elementos de Varray en Oracle?
Responder: No podemos modificar o eliminar elementos en un Varray con la ayuda de declaraciones SQL directamente. Tenemos que seleccionar el Varray de la tabla, modificarlo en PL / SQL, luego modificar la tabla y almacenarlo en un nuevo Varray.
P # 7) ¿Cuál es la diferencia entre la tabla anidada y Varray?
Respuesta: Las diferencias se enumeran a continuación:
- Tomamos el Varray cuando se conoce el número de elementos de antes. Esta restricción no es posible en tablas anidadas.
- En Varray, los elementos se utilizan en secuencia. La mesa anidada tiene características densas y dispersas.
- Los elementos siempre están ordenados en Varray. Los elementos pueden estar ordenados o no en la tabla anidada.
Conclusión
En este tutorial, hemos discutido en detalle algunos de los conceptos básicos de PL / SQL que son esenciales para desarrollar conocimientos sobre él.
Hemos cubierto los siguientes temas que se enumeran a continuación:
- Comprensión básica de colecciones PL SQL (métodos y excepciones).
- Varrays.
- Mesas anidadas
- Tablas indexadas
<< PREV Tutorial | SIGUIENTE Tutorial >>
Lectura recomendada
- Tipos de datos de matriz: matriz int, matriz doble, matriz de cadenas, etc.
- Matriz de Java: ¿Cómo imprimir elementos de una matriz en Java?
- Tutorial PL SQL para principiantes con ejemplos | ¿Qué es PL / SQL?
- Matriz de Java: declarar, crear e inicializar una matriz en Java
- Tutorial de longitud de matriz de Java con ejemplos de código
- SQL vs NoSQL diferencias exactas y saber cuándo usar NoSQL y SQL
- Diferencia entre SQL Vs MySQL Vs SQL Server (con ejemplos)
- Clase anidada de JUnit 5: Tutorial @ anidado con ejemplos