Saltar al contenido principal
Página

Tema 3.2 - Arreglos y Tipo de dato RECORD

Arreglos

En PL/SQL los arrays también son conocidos como associative arrays o index-by tables, los cuales no están limitados por un número de posiciones dada.

Cualquier posición del array se puede usar para guardar valores, no hay necesidad de que tengan secuencialidad.

Estos arrays también pueden usar índices negativos y si se intenta leer el dato de una posición no inicializada se genera un error NO DATA FOUND.

Sintaxis

Donde:

  1. assoctype: Es el identificador para el tipo de arreglo, es decir, el nombre que se le va a dar.
  2. datatype: Se especifica un tipo de dato soportado, tales como VARCHAR2, NUMBER, VARRAY o un tipo de arreglo asociativo. Los atributos %TYPE y %ROWTYPE también son compatibles.
  3. BINARY_INTEGER: Dato numérico entero.
  4. PLS_INTEGER: Dato numérico entero.
  5. VARCHAR2 (n [BYTE | CHAR]): Es una cadena de caracteres que tiene longitud máxima de n. El rango de n puede ser de 1 a 32672 BYTE o de 1 a 8168 CHAR.

Métodos de los arreglos o arreglos asociativos

A continuación, veremos los métodos que pueden utilizar esta clase de arreglos.

  1. COUNT: Devuelve el número de posiciones “activas” en el arreglo.
  2. DELETE: Borra elementos del arreglo.
  3. EXISTS: Es un booleano que nos dice si una posición del arreglo está activa.
  4. FIRST: Devuelve la menor posición activa.
  5. LAST: Devuelve la mayor posición activa.
  6. NEXT / PRIOR: Devuelve la próxima / anterior posición activa a la posición especificada.

Ejemplo:

Escribimos el siguiente código en PL/SQL.

Notemos que luego de crear la tabla tipo_ejemplo, debemos declarar una variable de ese tipo que en este caso es mi_ejemplo.

Al ejecutar el código anterior nos imprimirá en pantalla lo siguiente:

Tipo de dato RECORD

Es un tipo de dato compuesto que puede contener varios valores de tipo de dato escalar o tipo de dato compuesto.

Los Recrods se utilizan para tratar como unidad lógica tipos de distintos que guardan relación. Este tipo de dato compuesto debe contener uno o más componentes (llamados campos) de cualquier tipo: escalar, Record o INDEX BY table.

Los Records tienen una estructura muy similar al de la mayoría de lenguajes de programación de tercera generación (FORTRAN, ALGOL, entre otros), también son definidos por el usuario y pueden ser un sobconjunto de una fila de una tabla.

Un Record es un grupo de elementos de datos relacionados almacenados en campos, cada campo con su propio nombre y tipo de datos:

  1. Cada Record puede tener tantos campos como sea necesario.
  2. A los Records se les puede asignar valores iniciales y pueden definirse como NOT NULL.
  3. A los campos sin valores iniciales son inicializados con NULL.
  4. La palabra clave DEFAULT, así como := se pueden utilizar en la inicialización de campos.
  5. Se pueden definir tipos (types) de Records y declarar Records definidos por el usuario en la parte declarativa de cualquier bloque, subprograma o paquete.
  6. Se puede declarar y hacer referencia a los Records anidados. Un Record puede ser un componente de otro Record.

Adicionalmente existe otro tipo de dato compuesto que son las Colecciones y estos están clasificados en tres tipos:

  1. Arreglos asociativos (visto en el tema anterior).
  2. Tablas anidadas.
  3. VARRAY.

Sintaxis

Donde:

  1. type_name: Es el nombre del tipo RECORD (este identificador se utiliza para declarar las variables tipo RECORDs).
  2. field_name: Es el nombre de un campo dentro del RECORD.
  3. field_type: Es el tipo de dato del campo (Representa cualquier tipo de dato PL/SQL excepto REF CURSOR. Puede utilizar los atributos %ROWTYPE y %TYPE).
  4. expr: Es el valor inicial.

Cuándo utilizar los tipos de datos compuestos Record y Colecciones?

Se recomienda usar los Records cuando se quiere guardar valores de diferentes tipos de datos que están relacionados lógicamente. Un ejemplo puede ser crear un RECORD que contenga todos los detalles del empleado y están relacionados lógicamente porque proporcionan información de éste.

Mientras que las Colecciones se usan cuando se desea almacenar valores del mismo tipo de dato. Tener en cuenta que este tipo de dato también puede ser de tipo compuesto (como, por ejemplo, RECORD).

Ejemplo:

Usamos la información que tenemos de la tabla EMPLEADO.

Ahora procedemos a crear un RECORD con nombre record_empleado el cual almacenará todos los atributos del empleado. Luego creamos un cursor llamado cursor_empleado que recuperará aquellos empleados que tienen un sueldo mayor o igual a 900000 y los mostrará en pantalla.

Última modificación: lunes, 11 de mayo de 2020, 21:08