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

Colección PL/SQL:tabla anidada en base de datos Oracle

Cómo crear una tabla anidada dentro de un bloque PL/SQL

Bienvenido al segundo tutorial de la serie PL/SQL Collection. En este tutorial aprenderemos el primer tipo de Colección que es "Tabla Anidada". Una tabla dentro de una tabla es la definición más simple que uno puede encontrar y es correcta en todos los sentidos porque una tabla que está incrustada dentro de otra tabla es exactamente lo que sugiere el nombre de tabla anidada.

Pero, si tenemos que definir la colección "Tabla anidada" de una manera más elegante y técnica, entonces podemos decir que las tablas anidadas son estructuras unidimensionales que son persistentes y de naturaleza ilimitada. Son accesibles tanto en SQL como en PL/SQL y se pueden utilizar en tablas, registros y definiciones de objetos. Dado que es una colección PL/SQL ilimitada, puede contener cualquier número de elementos en un conjunto ordenado al azar.

Definición
Las tablas anidadas son estructuras unidimensionales que son persistentes y de naturaleza ilimitada. Son accesibles tanto en SQL como en PL/SQL y se pueden utilizar en tablas, registros y definiciones de objetos. Dado que es una colección PL/SQL ilimitada, puede contener cualquier número de elementos en un conjunto desordenado.

Lectura sugerida:Introducción a la colección PL/SQL

Se puede crear una tabla anidada dentro del bloque PL/SQL o en la base de datos como un objeto de tipo colección (Objeto de esquema). En el caso de la tabla anidada anterior, se comporta como una matriz unidimensional sin ningún tipo de índice ni límite superior.

Entonces, por el momento, concentrémonos en cómo crear una tabla anidada dentro del bloque PL/SQL y dejemos el resto para el próximo tutorial.

Sintaxis para crear una tabla anidada

DECLRE TYPE nested_table_name IS TABLE OF element_type [NOT NULL];

He explicado esta misma sintaxis en detalle en mi video tutorial en mi canal de YouTube. Le recomiendo que consulte ese video.

Ejemplo:¿Cómo crear una tabla anidada dentro de un bloque PL/SQL?

El siguiente ejemplo es solo para demostrar cómo crear una tabla anidada, no tiene nada de lujoso.

SET SERVEROUTPUT ON;DECLARE TYPE my_nested_table IS TABLE OF number; var_nt my_nested_table :=my_nested_table (9,18,27,36,45,54,63,72,81,90);BEGIN DBMS_OUTPUT.PUT_LINE ('El valor almacenado en el índice 1 en NT es ' ||var_nt (1)); DBMS_OUTPUT.PUT_LINE ('El valor almacenado en el índice 2 en NT es ' ||var_nt (2)); DBMS_OUTPUT.PUT_LINE ('El valor almacenado en el índice 3 en NT es ' ||var_nt (3));END; //pre> 

El ejemplo anterior es muy simple en el que creamos una tabla anidada y la llamamos 'my_nested_table' (línea número 3). En la siguiente línea (línea número 4) creamos una instancia de la misma colección y la usamos para inicializar la tabla anidada y almacenar algunos datos en ella. En la sección de ejecución accedemos a los datos almacenados individualmente usando el número de índice, de la misma manera que solíamos hacerlo en los arreglos.

En lugar de acceder a los datos uno por uno manualmente usando el índice, podemos usar bucles y recorrer cada elemento de la tabla anidada de la colección.

 ACTIVAR SALIDA DEL SERVIDOR; DECLARAR TIPO my_nested_table ES TABLA DE número; var_nt mi_tabla_anidada :=mi_tabla_anidada (9,18,27,36,45,54,63,72,81,90); COMENZAR POR i EN 1..var_nt.COUNT LOOP DBMS_OUTPUT.PUT_LINE ('Valor almacenado en el índice '||i||'es '||var_nt(i)); FIN DEL BUCLE; FIN; //pre> 

Ese es otro ejemplo de cómo crear una tabla anidada en la que recorremos los datos y los mostramos al usuario usando For Loop.

Eso es todo sobre cómo crear tablas anidadas en bloques PL/SQL. Estén atentos ya que en el próximo tutorial aprenderemos cómo crear tablas anidadas como objetos de colección de bases de datos y qué vistas de diccionario de datos puede usar para obtener la información de las tablas anidadas que están almacenadas en su base de datos.

Eso es todo. ¡Gracias por leer y que tengas un gran día!