Para que puedas almacenar en memoria un conjunto de datos de un
determinado tipo, la base de datos de Oracle te ofrece los tipos de
datos colección.
Una colección es un conjunto de elementos del mismo tipo.
Puede comparase con los vectores y matrices que se utilizan en
muchos lenguajes de programación. En este caso, las colecciones sólo
pueden tener una dimensión y los elementos se indexan
mediante un valor de tipo numérico o cadena de caracteres.
La base de datos de Oracle proporciona los tipos VARRAY
y NESTED TABLE
(tabla anidada) como
tipos de datos colección.
- Un
VARRAY
es una
colección de elementos a la
que se le establece una dimensión máxima que debe indicarse al
declararla. Al tener una longitud fija, la eliminación de elementos
no ahorra espacio en la memoria del ordenador.
- Una
NESTED TABLE
(tabla
anidada) puede almacenar cualquier número de elementos. Tienen,
por tanto, un tamaño dinámico, y no tienen que existir
forzosamente valores para todas las posiciones de la colección.
- Una variación de las tablas anidadas son los arrays
asociativos, que utilizan valores arbitrarios para sus índices.
En este caso, los índices no tienen que ser necesariamente
consecutivos.
Cuando necesites almacenar un número fijo de elementos, o hacer
un recorrido entre los elementos de forma ordenada, o si necesitas
obtener y manipular toda la colección como un valor, deberías
utilizar el tipo VARRAY
.
En cambio, si necesitas ejecutar consultas sobre una colección de
manera eficiente, o manipular un número arbitrario de elementos, o
bien realizar operaciones de inserción, actualización o borrado de
forma masiva, deberías usar una NESTED TABLE
.
Las colecciones pueden ser
declaradas como una instrucción SQL
o en el bloque de declaraciones de un programa PL/SQL. El tipo de
dato de los elementos que puede contener una colección declarada en
PL/SQL es cualquier tipo de dato PL/SQL, excepto REF CURSOR
. Los
elementos de las colecciones declaradas en SQL, además no
pueden ser de los tipos: BINARY_INTEGER
, PLS_INTEGER
, BOOLEAN
, LONG
, LONG RAW
, NATURAL
, NATURALN
, POSITIVE
, POSITIVEN
, REF CURSOR
, SIGNTYPE
, STRING
.
Cualquier tipo de objetos declarado previamente puede ser
utilizado como tipo de elemento para una colección.
Una tabla de la base de datos puede contener columnas que sean
colecciones. Sobre una tabla que contiene colecciones se podrán
realizar operaciones de consulta y manipulación de datos de la misma
manera que se realiza con tablas con los tipos de datos habituales.