Continuando con esta serie sobre las colecciones APEX, en en que ya se publicó las entradas:
En esta ocasión vamos a explicar cómo fusionar, truncar y eliminar colecciones.
Fusionar colecciones
Se pueden fusionar miembros de una colección con valores pasados en un conjunto de arreglos. Al usar el argumento p_init_query, se puede crear una colección desde la consulta proporcionada. Para fusionar colecciones, utilizamos el procedimiento MERGE_MEMBERS.
MERGE_MEMBERS | Este procedimiento se utiliza para fusionar miembros de una colección nombrada dada, con los correspondientes valores pasados en los arreglos. Si la colección indicada no existe, entonces se crea una. Si se proporciona un argumento p_init_query, la colección se crea a partir de la consulta SQL proporcionada. Si el nombre de la colección existe, sucede lo siguiente:
El conteo de elementos en la tabla PL/SQL p_c001 es usado como el número total de elementos en todas las tablas PL/SQL. Por ejemplo, si p_c001.count es 2 y p_c002.count es 10, solo 2 miembros son fusionados. Si p_c001 es nulo se genera un error de aplicación. |
---|
El siguiente ejemplo crea una colección sobre la tabla de empleados y luego fusiona los contenidos de los arreglos locales con la colección, actualizando el puesto de dos empleados.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<em> DECLARE l_seq APEX_APPLICATION_GLOBAL.VC_ARR2; l_c001 APEX_APPLICATION_GLOBAL.VC_ARR2; l_c002 APEX_APPLICATION_GLOBAL.VC_ARR2; l_c003 APEX_APPLICATION_GLOBAL.VC_ARR2; BEGIN l_seq(1) := 1; l_c001(1) := 7369; l_c002(1) := 'SMITH'; l_c003(1) := 'MANAGER'; l_seq(2) := 2; l_c001(2) := 7499; l_c002(2) := 'ALLEN'; l_c003(2) := 'CLERK'; APEX_COLLECTION.MERGE_MEMBERS( p_collection_name => 'EMPLOYEES', p_seq => l_seq, p_c001 => l_c001, p_c002 => l_c002, p_c003 => l_c003, p_init_query => 'select empno, ename, job from emp order by empno'); END; </em> |
Truncar una colección
Cuando se trunca una colección, se remueven todos lo miembros de la colección especificada, pero la colección nombrada permanece en su lugar. En otras palabras, se elimina su contenido pero no la colección como tal; para lo cual usamos el siguiente procedimiento:
TRUNCATE_COLLECTION | Utilice este procedimiento para remover todos los miembros de una colección nombrada. Si la colección indicada no existe para el usuario actual en la misma sesión y para el ID de aplicación actual, se produce un error de aplicación. |
---|
En el ejemplo a continuación, se remueven todos los miembros de la colección llamada DEPARTAMENTOS.
1 2 3 4 5 |
<em> BEGIN; APEX_COLLECTION.TRUNCATE_COLLECTION( p_collection_name => 'DEPARTMENTOS'); END; </em> |
Eliminar colecciones
Cuando se elimina una colección, se elimina tanto la colección como los miembros de la misma. Si usted no elimina una colección, está es eliminada cuando la sesión en la que se creó es purgada.
Existen diferentes métodos para eliminar colecciones:
DELETE_COLLECTION | Utilice este procedimiento para eliminar una colección nombrada. Todos los miembros que pertenecen a la colección son removidos y la colección nombrada es borrada. Si la colección indicada no existe para el mismo usuario en la sesión actual para el ID de aplicación actual, se produce un error de aplicación. |
---|
El siguiente ejemplo muestra como utilizar el procedimiento DELETE_COLLECTION para eliminar la colección EMPLEADOS.
1 2 3 4 |
<em> Begin APEX_COLLECTION.DELETE_COLLECTION( p_collection_name => 'EMPLEADOS'); End;</em> |
DELETE_ALL_COLLECTIONS | Se usa este procedimiento para eliminar todas las colecciones que pertenecen al usuario actual en la sesión de APEX actual para la aplicación actual. |
---|
El ejemplo a continuación muestra el uso de este procedimiento:
1 2 3 |
<em> Begin</em> <em> APEX_COLLECTION.DELETE_ALL_COLLECTIONS;</em> <em> End;</em> |
DELETE_ALL_COLLECTIONS_SESSION | Se utiliza este procedimiento para eliminar todas las colecciones que pertenecen al usuario actual de APEX, sin importar la aplicación a la que pertenezcan. |
---|
En el siguiente ejemplo, se muestra el uso de dicho procedimiento:
1 2 3 |
<em> Begin</em> <em> APEX_COLLECTION.DELETE_ALL_COLLECTIONS_SESSION;</em> <em> End;</em> |
Hasta el momento hemos cubierto cómo nombrar, crear, acceder, fusionar, truncar y eliminar colecciones, además de la introducción al concepto de colecciones APEX. En la próxima entrega, veremos cómo agregar, modificar y eliminar miembros de una colección.