ARREGLOS PL/SQL César Martínez C. Profesor Instructor de Base de Datos Sede Puente Alto DUOC
INTRODUCCIÓN Los tipos de arreglos que estudiaremos son: Registros Tablas PL/SQL Varray Son estructuras de datos mas complejas que las escalares (un valor por variable), ya que permiten almacenar mas un de dato escalar e incluso almacenar otros datos de tipo «arreglo»
REGISTROS Es una estructura de datos, almacenados en campos, cada uno de los cuales tiene su propio nombre y tipo y que se tratan como una sola unidad lógica Cuando declaramos una variable como «rowtype» se está declarando un registro (1 fila x n columnas) Sin embargo, dicha forma de declarar variables asumirá la estructura de un objeto ya existente. Pero en el caso que dicha estructura no nos sirva para nuestro propósito dicha forma de declarar ya no es conveniente, debemos declarar nuestra propia estructura Para declarar un registro, primero debemos crear nuestro propio tipo (estructura) y luego declaramos una variable que asuma esa estructura
SINTÁXIS TYPE «nombre» IS RECORD ( campo1 <tipo_datos> [NOT NULL] [DEFAULT valor1] := valor_asignado1], campo 2<tipo_datos> [NOT NULL] [DEFAULT valor1] := valor_asignado2], campo n<tipo_datos> [NOT NULL] [DEFAULT valor1] := valor_asignado], );
EJEMPLO
EJEMPLO
CONSIDERACIONES Los registros pueden anidarse, es decir, un campo de un registro puede ser de tipo de otro registro Pueden asignarse todos los campos de un registro utilizando una sentencia SELECT. Se debe tener cuidado con el orden de las columnas No se pueden comparar dos registros, se deben comparar campo por campo
EJEMPLO ANIDAMIENTO DE REGISTROS
TABLAS PL/SQL Una tabla PL/SQL es un arreglo bidimensional (n x m) Está compuesta por dos partes: Un índice de tipo BINARY_INTEGER y una columna que contiene los valores de la tabla PL/SQL El rango del índice es 2 mil millones.. +2 mil millones, lo cual indica que el índice del primer valor no necesariamente es el cero. Tampoco es obligatorio que sean secuenciales Puede incrementar su tamaño dinámicamente. No es posible inicializar las tablas en la inicialización. Es posible declarar elementos de una tabla PL/SQL como de tipo registro (record)
SINTÁXIS TYPE <<nombre_tabla>> IS TABLE OF <<tipo_datos>> [NOT NULL] INDEX BY BINARY_INTEGER;
EJEMPLO
EJEMPLO USO NO SECUENCIAL DEL ÍNDICE
EJEMPLO USO CON REGISTROS PL/SQL
FUNCIONES DE MANEJO FIRST. Devuelve el menor índice de la tabla. NULL si está vacía. LAST. Devuelve el mayor índice de la tabla. NULL si está vacía. EXISTS(i). Utilizada para saber si en un cierto índice hay almacenado un valor. Devolverá TRUE si en el índice i hay un valor. COUNT. Devuelve el número de elementos de la tabla PL/SQL. PRIOR(n). Devuelve el número del índice anterior a n en la tabla. NEXT(n). Devuelve el número del índice posterior a n en la tabla. DELETE. Borra todos los elementos de la tabla PL/SQL. DELETE(n) borra el correspondiente al índice n. DELETE(m,n) borra los elementos entre m y n.
EJEMPLO USO DE FUNCIONES DE MANEJO
VARRAY Un varray es similar a las tablas de PL/SQL, pero se diferencian en que los elementos del varray se almacenan comenzando en el índice 1 hasta la longitud máxima declarada. Los VARRAY deben estar inicializados antes de poder utilizarse Se puede inicializar el VARRAY en la sección de declaración o bien dentro de la sección de ejecución
SINTAXIS TYPE <<nombre_tipo>> IS VARRAY(<tamaño_maximo>) OF <tipo_elementos>; Una consideración a tener en cuenta es que en la declaración de un varray el tipo de datos no puede ser alguno de los siguientes: BOOLEAN NCHAR, NCLOB NVARCHAR(n) REF CURSOR TABLE, VARRAY
FUNCIONES DE MANEJO Un VARRAY posee las mismas funciones de manejo que las tablas PL/SQL agregándose las siguientes: LIMIT. Devuelve el número máximo de elementos que admite el VARRAY. EXTEND. Añade un elemento al VARRAY. EXTEND(n).Añade(n) elementos al VARRAY. Un VARRAY se puede almacenar en las columnas de la base de datos en la base de datos, pero su uso no es recomendable, por lo cual no lo pasaremos como materia
EJEMPLO Nota: El tamaño de un VARRAY se establece mediante el número de parámetros utilizados en el constructor, si declaramos un VARRAY de cinco elementos pero al inicializarlo pasamos sólo tres parámetros al constructor, el tamaño del VARRAY será tres. El tamaño de un VARRAY podrá aumentarse (extend), pero nunca con mayor dimensión que la definida en la declaración del tipo.
AYÚDANOS A MEJORAR cesa.martinez@profesor.duoc.cl cmartinezc@duoc.cl
FIN César Martínez C. Profesor Instructor de Base de Datos Sede Puente Alto DUOC