De acuerdo con la documentación oficial de Oracle, las colecciones nos permiten capturar de manera temporal uno o más valores no escalares y las podemos usar para almacenar filas y columnas del estado de la sesión actual de manera que puedan ser accedidas, manipuladas o procesadas durante una sesión de usuario específica. Adicionalmente, nos dice que podemos pensar de una colección como un balde o recipiente en el que almacenamos y nombramos de manera temporal filas de información.

Cada colección tiene sus características específicas dentro de las que se pueden mencionar:

  1. Pueden contener una lista nombrada de elementos de datos o miembros que pueden tener:
    1. Hasta 50 atributos de tipo carácter (Varchar2(4000))
    2. Hasta 5 atributos numéricos
    3. Hasta 5 atributos de fecha
    4. Un atributo de tipo XML
    5. Un atributo binario grande (BLOB)
    6. Un atributo carácter grande (CLOB)
  2. Los nombres de estos elementos o miembros de la colección es el siguiente:
    1. c001 a c050, para los atributos tipo carácter
    2. n001 a n005, para los atributos numéricos
    3. d001 a d005, para los atributos de tipo fecha
    4. xmltype001, para el atributo Tipo XML
    5. blob001, para el atributo tipo BLOB
    6. clob001, para el atributo tipo CLOB
  3. Se puede insertar, actualizar y eliminar información en ellas
  4. Para realizar las tareas de mantenimiento de datos se utiliza la API PL/SQL “APEX_COLLECTION”

Ahora bien, ¿cuándo se deberían utilizar colecciones? Los siguientes son escenarios para contemplar esta alternativa:

  1. Cuando se está creando un asistente de ingreso de datos en el que múltiples filas de información necesitan ser “capturadas” en una transacción lógica. En este caso se pueden utilizar las colecciones para almacenar de manera temporal el contenidos de las múltiples filas de información, antes de ejecutar el paso final del asistente cuando tanto las transacciones físicas como lógicas son completadas.
  2. Cuando una aplicación incluye una página de actualización en la que un usuario actualiza múltiples líneas de detalle en una página. El usuario puede ejecutar muchas actualizaciones, aplicar estas actualizaciones a una colección y luego llamar un proceso final para aplicar los cambios a la base de datos.
  3. Cuando se construye un asistente donde se recolecta un número arbitrario de atributos. Al final del asistente, el usuario realiza una tarea que toma la información almacenada de manera temporal en la colección y la aplica a la base de datos.

Algo importante de mencionar es que a partir de la versión 12c de la base de datos Oracle, las columnas de datos de tipo VARCHAR2 pueden ser definidas de hasta 32767 bytes. Para esto se requiere que el parámetro de inicialización de base de datos MAX_STRING_SIZE este definido con el valor EXTENTED. Si APEX se instaló en una base de datos Oracle 12c y con el parámetro anterior definido con el valor indicado, las tablas para las colecciones APEX serán definidas para soportar hasta 32767 bytes para los atributos tipo carácter de la colección.

En futuras entregas continuaré con los siguientes temas acerca de las colecciones APEX:

  • Cómo nombrar, crear y acceder a colecciones
  • Cómo unir, truncar y eliminar colecciones
  • Cómo agregar, modificar y eliminar miembros a una colección
  • Cómo manejar colecciones
  • Cómo utilizar colecciones en un ejemplo real
Share This