Seleccionar página

APEX_COLLECTION – Parte 4

apex_collection

Escrito por: Eddie Molina

Oracle ACE Pro. Oracle APEX Cloud Developer Certified Professional. Presidente de ORAUGCRC (Grupo de Usuarios Oracle de Costa Rica). Miembro de líderes de LAOUC. Conferencista, consultor, desarrollador y capacitador en tecnologías Oracle, especialmente Oracle Application Express con más de 30 años de experiencia.

14/04/2022

En la entrada anterior, puede encontrar el segundo grupo de funciones y procedimientos del paquete API APEX_COLLECTION, en esta, continuamos con el grupo final de las mismas.

Procedimiento RESET_COLLECTION_CHANGED

Utilice este procedimiento para restablecer el indicador de cambio de colección (marcar como no cambiado) para una colección determinada.

Si no existe una colección con el nombre especificado para el usuario actual en la misma sesión y para el ID de aplicación actual, se genera un error de aplicación.

La sintaxis del procedimiento es:

APEX_COLLECTION.RESET_COLLECTION_CHANGED (
     p_collection_name IN VARCHAR2);

Donde:

Parámetro Descripción
p_collection_name El nombre de la colección para restablecer el indicador de cambio de colección. Se devuelve un error si esta colección no existe con el nombre especificado del usuario actual y en la misma sesión.

Un ejemplo del uso de este procedimiento es:

BEGIN
     APEX_COLLECTION.RESET_COLLECTION_CHANGED (
          p_collection_name => ‘DEPARTMENTS’);
END;

 

Procedimiento RESET_COLLECTION_CHANGED_ALL

Utilice este procedimiento para restablecer el indicador de cambio de colección (marcar como no cambiado) para todas las colecciones en la sesión actual del usuario.

La sintaxis del procedimiento es:

APEX_COLLECTION.RESET_COLLECTION_CHANGED_ALL;

Un ejemplo del uso de este procedimiento es:

BEGIN
     APEX_COLLECTION.RESET_COLLECTION_CHANGED_ALL;
END;

 

Procedimiento SORT_MEMBERS

Utilice este procedimiento para reordenar los miembros de una colección dada por el número de columna especificado por p_sort_on_column_number. Esto ordena la colección por una columna/atributo en particular en la colección y reasigna los ID de secuencia de cada número de modo que no existan espacios. Si no existe una colección con el nombre especificado para el usuario actual en la misma sesión y para el ID de aplicación actual, se genera un error de aplicación.

La sintaxis del procedimiento es:

APEX_COLLECTION.SORT_MEMBERS (
     p_collection_name IN VARCHAR2,
     p_sort_on_column_number IN NUMBER);

Donde:

Parámetro Descripción
p_collection_name El nombre de la colección a ordenar. Se devuelve un error si esta colección no existe con el nombre especificado del usuario actual y en la misma sesión.
p_sort_on_column_number El número de columna utilizado para ordenar la colección. El dominio de valores posibles es de 1 a 50.

Un ejemplo del uso de este procedimiento es:

BEGIN
     APEX_COLLECTION.SORT_MEMBERS (
          p_collection_name => ‘DEPARTMENTS’,
          p_sort_on_column_number => ‘2’;
END;

 

Procedimiento TRUNCATE_COLLECTION

Utilice este procedimiento para eliminar todos los miembros de una colección con nombre.

Si no existe una colección con el nombre especificado para el usuario actual en la misma sesión y para el ID de aplicación actual, se genera un error de aplicación.

La sintaxis del procedimiento es:

APEX_COLLECTION.TRUNCATE_COLLECTION (
     p_collection_name IN VARCHAR2);

Donde:

Parámetro Descripción
p_collection_name El nombre de la colección a truncar. Se devuelve un error si esta colección no existe con el nombre especificado del usuario actual y en la misma sesión.

Un ejemplo del uso de este procedimiento es:

BEGIN
     APEX_COLLECTION.TRUNCATE_COLLECTION(
          p_collection_name => ‘DEPARTMENTS’);
END;

 

Procedimiento UPDATE_MEMBER

Utilice este procedimiento para actualizar el miembro especificado en la colección con nombre dada.

Si no existe una colección con el nombre especificado para el usuario actual en la misma sesión y para el ID de aplicación actual, se genera un error de aplicación. Si el miembro especificado por el ID de secuencia p_seq no existe, se genera un error de aplicación.

Nota: El uso de este procedimiento establece las columnas identificadas y anula las columnas no identificadas. Para actualizar columnas específicas, sin afectar los valores de otras columnas, use “UPDATE_MEMBER_ATTRIBUTE Procedimiento Firma 1”.

La sintaxis del procedimiento es:

APEX_COLLECTION.UPDATE_MEMBER (
     p_collection_name IN VARCHAR2,
     p_seq IN VARCHAR2 DEFAULT NULL,
     p_c001 IN VARCHAR2 DEFAULT NULL,
     p_c002 IN VARCHAR2 DEFAULT NULL,
     p_c003 IN VARCHAR2 DEFAULT NULL,
     …
     p_c050 IN VARCHAR DEFAULT NULL,
     p_n001 IN NUMBER DEFAULT NULL,
     p_n002 IN NUMBER DEFAULT NULL,
     p_n003 IN NUMBER DEFAULT NULL,
     p_n004 IN NUMBER DEFAULT NULL,
     p_n005 IN NUMBER DEFAULT NULL,
     p_d001 IN DATE DEFAULT NULL,
     p_d002 IN DATE DEFAULT NULL,
     p_d003 IN DATE DEFAULT NULL,
     p_d004 IN DATE DEFAULT NULL,
     p_d005 IN DATE DEFAULT NULL,
     p_clob001 IN CLOB DEFAULT empty_clob(),
     p_blob001 IN BLOB DEFAULT empty-blob(),
     p_xmltype001 IN XMLTYPE DEFAULT NULL );

Donde:

Parámetro Descripción
p_collection_name El nombre de la colección a actualizar. La longitud máxima es de 255 bytes. Los nombres de las colecciones no distinguen entre mayúsculas y minúsculas y se convierten a mayúsculas.
p_c001 through p_c050 Valor de atributo del miembro que se va a agregar. La longitud máxima es de 4.000 bytes. Cualquier atributo de carácter que supere los 4000 caracteres se trunca a 4000 caracteres.
p_n001 through p_n005 Valor de atributo de los atributos numéricos que se agregarán o actualizarán.
p_d001 through p_d005 Valor de atributo de los atributos de fecha que se agregarán o actualizarán.
p_clob001 Utilice p_clob001 para los atributos de los miembros de la colección que superen los 4000 caracteres.
p_blob001 Utilice p_blob001 para los atributos de miembros de la colección binaria.
p_xmltype001 Utilice p_xmltype001 para almacenar XML bien formado.

Un ejemplo del uso de este procedimiento es:

BEGIN
     APEX_COLLECTION.UPDATE_MEMBER (
          p_collection_name => ‘Departments’,
          p_seq => ‘2’,
          p_c001 => ‘Engineering’,
          p_c002 => ‘Sales’);
END;

 

Procedimiento UPDATE_MEMBERS

Utilice este procedimiento para actualizar la matriz de miembros de la colección con nombre dada. Si no existe una colección con el nombre especificado para el usuario actual en la misma sesión y para el ID de aplicación actual, se genera un error de aplicación. El recuento de elementos en la tabla p_seq PL/SQL se usa como el número total de elementos en todas las tablas PL/SQL. Es decir, si p_seq.count = 2 y p_c001.count = 10, solo 2 miembros se actualizan_apex_application_globalted. Si p_seq es nulo, se genera un error de aplicación. Si el miembro especificado por el ID de secuencia p_seq no existe, se genera un error de aplicación.

La sintaxis del procedimiento es:

APEX_COLLECTION.UPDATE_MEMBERS (
     p_collection_name IN VARCHAR2,
     p_seq IN apex_application_global.VC_ARR2 DEFAULT empty_vc_arr,
     p_c001 IN apex_application_global.VC_ARR2 DEFAULT empty_vc_arr,
     p_c002 IN apex_application_global.VC_ARR2 DEFAULT empty_vc_arr,
     p_c003 IN apex_application_global.VC_ARR2 DEFAULT empty_vc_arr,
     …
     p_c050 IN apex_application_global.VC_ARR2 DEFAULT empty_vc_arr,
     p_n001 IN apex_application_global.N_ARR DEFAULT empty_n_arr,
     p_n002 IN apex_application_global.N_ARR DEFAULT empty_n_arr,
     p_n003 IN apex_application_global.N_ARR DEFAULT empty_n_arr,
     p_n004 IN apex_application_global.N_ARR DEFAULT empty_n_arr,
     p_n005 IN apex_application_global.N_ARR DEFAULT empty_n_arr,
     p_d001 IN apex_application_global.D_ARR DEFAULT empty_d_arr,
     p_d002 IN apex_application_global.D_ARR DEFAULT empty_d_arr,
     p_d003 IN apex_application_global.D_ARR DEFAULT empty_d_arr,
     p_d004 IN apex_application_global.D_ARR DEFAULT empty_d_arr,
     p_d005 IN apex_application_global.D_ARR DEFAULT empty_d_arr)

Nota: Cualquier atributo de carácter que supere los 4000 caracteres se trunca a 4000 caracteres. Además, la cantidad de miembros agregados se basa en la cantidad de elementos en la primera matriz.

Donde:

Parámetro Descripción

p_collection_name

El nombre de la colección a actualizar. La longitud máxima es de 255 bytes. Los nombres de las colecciones no distinguen entre mayúsculas y minúsculas y se convierten a mayúsculas.

p_seq

Matriz de ID de secuencia de miembro que se actualizará. El recuento de la matriz p_seq se usa en todas las matrices.

p_c001 through p_c050

Matriz de valores de atributo que se actualizará.

p_n001 through p_n005

Valor de atributo de numérico.

p_d001 through p_d005

Matriz de valores de atributo de fecha que se actualizará.

Un ejemplo del uso de este procedimiento es:

DECLARE
     l_seq apex_application_global.vc_arr2;
     l_carr apex_application_global.vc_arr2;
     l_narr apex_application_global.n_arr;
     l_darr apex_application_global.d_arr;
BEGIN
     l_seq(1) := 10;
     l_seq(2) := 15;
     l_carr(1) := ‘Apples’;
     l_carr(2) := ‘Grapes’;
     l_narr(1) := 100;
     l_narr(2) := 150;
     l_darr(1) := sysdate;
     l_darr(2) := sysdate;

     APEX_COLLECTION.UPDATE_MEMBERS (
          p_collection_name => ‘Groceries’,
          p_seq => l_seq,
          p_c001 => l_carr,
          p_n001 => l_narr,
          p_d001 => l_darr);
END;

 

Procedimiento UPDATE_MEMBER_ATTRIBUTE Firma 1

Actualice el atributo de miembro especificado en la colección con nombre dada. Si no existe una colección con el nombre especificado para el usuario actual en la misma sesión para el ID de aplicación actual, se genera un error de aplicación. Si el miembro especificado por el ID de secuencia p_seq no existe, se genera un error de aplicación. Si el número de atributo especificado no es válido o está fuera del rango 1-50, se genera un error. Cualquier valor de atributo que supere los 4000 bytes se trunca a 4000 bytes.

La sintaxis del procedimiento es:

APEX_COLLECTION.UPDATE_MEMBER_ATTRIBUTE (
     p_collection_name IN VARCHAR2,
     p_seq IN NUMBER,
     p_attr_number IN NUMBER,
     p_attr_value IN VARCHAR2);

Donde:

Parámetro Descripción

p_collection_name

El nombre de la colección. La longitud máxima puede ser de 255 bytes. Los nombres de colección no distinguen entre mayúsculas y minúsculas, ya que el nombre de la colección se convierte a mayúsculas. Se devuelve un error si esta colección no existe con el nombre especificado del usuario actual y en la misma sesión.

p_seq

ID de secuencia del miembro de la colección que se va a actualizar.

p_attr_number

Número de atributo del atributo de miembro que se va a actualizar. Los valores válidos son del 1 al 50. Cualquier número fuera de este rango se ignora.

p_attr_value

Valor de atributo del atributo de miembro que se va a actualizar.

Un ejemplo del uso de este procedimiento es:

BEGIN
     APEX_COLLECTION.UPDATE_MEMBER_ATTRIBUTE (
          p_collection_name => ‘Departments’,
          p_seq => 2,
          p_attr_number => 1,
          p_attr_value => ‘Engineering’);
END;

 

Procedimiento UPDATE_MEMBER_ATTRIBUTE Firma 2

Actualice el atributo de miembro CLOB especificado en la colección con el nombre dado.

Si no existe una colección con el nombre especificado para el usuario actual en la misma sesión para el ID de aplicación actual, se genera un error de aplicación.

Si el miembro especificado por el ID de secuencia p_seq no existe, se genera un error de aplicación.

Si el número de atributo especificado no es válido o está fuera del rango válido (actualmente solo 1 para CLOB), se genera un error.

La sintaxis del procedimiento es:

APEX_COLLECTION.UPDATE_MEMBER_ATTRIBUTE (
     p_collection_name IN VARCHAR2,
     p_seq IN NUMBER,
     p_clob_number IN NUMBER,
     p_clob_value IN CLOB );

Donde:

Parámetro Descripción
p_collection_name El nombre de la colección. La longitud máxima puede ser de 255 bytes. Los nombres de colección no distinguen entre mayúsculas y minúsculas, ya que el nombre de la colección se convierte a mayúsculas. Se devuelve un error si esta colección no existe con el nombre especificado del usuario actual y en la misma sesión.
p_seq ID de secuencia del miembro de la colección que se va a actualizar.
p_clob_number Número de atributo del atributo de miembro CLOB que se actualizará. El valor válido es 1. Cualquier número fuera de este rango se ignora.
p_clob_value Valor de atributo del atributo de miembro CLOB que se actualizará.

Un ejemplo del uso de este procedimiento es:

BEGIN
     APEX_COLLECTION.UPDATE_MEMBER_ATTRIBUTE (
          p_collection_name => ‘Departments’,
          p_seq => 2,
          p_clob_number => 1,
          p_clob_value => ‘Engineering’);
END;

 

Procedimiento UPDATE_MEMBER_ATTRIBUTE Firma 3

Actualice el atributo de miembro BLOB especificado en la colección con nombre dada. Si no existe una colección con el nombre especificado para el usuario actual en la misma sesión para el ID de aplicación actual, se genera un error de aplicación. Si el miembro especificado por el ID de secuencia p_seq no existe, se genera un error de aplicación. Si el número de atributo especificado no es válido o está fuera del rango válido (actualmente solo 1 para BLOB), se genera un error.

La sintaxis del procedimiento es:

APEX_COLLECTION.UPDATE_MEMBER_ATTRIBUTE (
     p_collection_name IN VARCHAR2,
     p_seq IN NUMBER,
     p_blob_number IN NUMBER,
     p_blob_value IN BLOB);

Donde:

Parámetro Descripción

p_collection_name

El nombre de la colección. La longitud máxima puede ser de 255 bytes. Los nombres de colección no distinguen entre mayúsculas y minúsculas, ya que el nombre de la colección se convierte a mayúsculas. Se devuelve un error si esta colección no existe con el nombre especificado del usuario actual y en la misma sesión.

p_seq

ID de secuencia del miembro de la colección que se va a actualizar.

p_blob_number

Número de atributo del atributo de miembro BLOB que se actualizará. El valor válido es 1. Cualquier número fuera de este rango se ignora.

p_blob_value

Valor de atributo del atributo de miembro BLOB que se va a actualizar.

Un ejemplo del uso de este procedimiento es:

BEGIN
     APEX_COLLECTION.UPDATE_MEMBER_ATTRIBUTE (
          p_collection_name => ‘Departments’,
          p_seq => 2,
          p_blob_number => 1,
          p_blob_value => l_blob_content);
END;

 

Procedimiento UPDATE_MEMBER_ATTRIBUTE Firma 4

Actualice el atributo de miembro XMLTYPE especificado en la colección con nombre dada. Si no existe una colección con el nombre especificado para el usuario actual en la misma sesión para el ID de aplicación actual, se genera un error de aplicación. Si el miembro especificado por el ID de secuencia p_seq no existe, se genera un error de aplicación. Si el número de atributo especificado no es válido o está fuera del rango válido (actualmente solo 1 para XMLTYPE), se genera un error.

La sintaxis del procedimiento es:

APEX_COLLECTION.UPDATE_MEMBER_ATTRIBUTE (
     p_collection_name IN VARCHAR2,
     p_seq IN NUMBER,
     p_xmltype_number IN NUMBER,
     p_xmltype_value IN BLOB);

Donde:

Parámetro Descripción

p_collection_name

El nombre de la colección. La longitud máxima puede ser de 255 bytes. Los nombres de colección no distinguen entre mayúsculas y minúsculas, ya que el nombre de la colección se convierte a mayúsculas. Se devuelve un error si esta colección no existe con el nombre especificado del usuario actual y en la misma sesión.

p_seq

ID de secuencia del miembro de la colección que se va a actualizar.

p_xmltype_number

Número de atributo del atributo de miembro XMLTYPE que se actualizará. El valor válido es 1. Cualquier número fuera de este rango se ignora.

p_xmltype_value

Valor de atributo del atributo de miembro XMLTYPE que se va a actualizar.

Un ejemplo del uso de este procedimiento es:

BEGIN
     APEX_COLLECTION.UPDATE_MEMBER_ATTRIBUTE (
          p_collection_name => ‘Departments’,
          p_seq => 2,
          p_xmltype_number => 1,
          p_xmltype_value => l_xmltype_content);
END;

 

Procedimiento UPDATE_MEMBER_ATTRIBUTE Firma 5

Actualice el atributo de miembro NUMBER especificado en la colección con nombre dada. Si no existe una colección con el nombre especificado para el usuario actual en la misma sesión para el ID de aplicación actual, se genera un error de aplicación. Si el miembro especificado por el ID de secuencia p_seq no existe, se genera un error de aplicación. Si el número de atributo especificado no es válido o está fuera del rango válido (actualmente solo del 1 al 5 para NÚMERO), se genera un error.

La sintaxis del procedimiento es:

APEX_COLLECTION.UPDATE_MEMBER_ATTRIBUTE (
     p_collection_name IN VARCHAR2,
     p_seq IN NUMBER,
     p_attr_number IN NUMBER,
     p_number_value IN NUMBER);

Nota: Cualquier atributo de carácter que supere los 4000 caracteres se trunca a 4000 caracteres. Además, la cantidad de miembros agregados se basa en la cantidad de elementos en la primera matriz.

Donde:

Parámetro Descripción

p_collection_name

El nombre de la colección. La longitud máxima puede ser de 255 bytes. Los nombres de colección no distinguen entre mayúsculas y minúsculas, ya que el nombre de la colección se convierte a mayúsculas. Se devuelve un error si esta colección no existe con el nombre especificado del usuario actual y en la misma sesión.

p_seq

ID de secuencia del miembro de la colección que se va a actualizar.

p_attr_number

Número de atributo del atributo de miembro NUMBER que se actualizará. El valor válido es de 1 a 5. Cualquier número fuera de este rango se ignora.

p_number_value

Valor de atributo del atributo de miembro NUMBER que se actualizará.

Un ejemplo del uso de este procedimiento es:

BEGIN
     APEX_COLLECTION.UPDATE_MEMBER_ATTRIBUTE (
          p_collection_name => ‘Departments’,
          p_seq => 2,
          p_attr_number => 1,
          p_number_value => 3000);
END;

 

Procedimiento UPDATE_MEMBER_ATTRIBUTE Firma 6

Actualice el atributo de miembro DATE especificado en la colección nombrada dada. Si no existe una colección con el nombre especificado para el usuario actual en la misma sesión para el ID de aplicación actual, se genera un error de aplicación. Si el miembro especificado por el ID de secuencia p_seq no existe, se genera un error de aplicación. Si el número de atributo especificado no es válido o está fuera del rango válido (actualmente solo del 1 al 5 para DATE), se genera un error.

La sintaxis del procedimiento es:

APEX_COLLECTION.UPDATE_MEMBER_ATTRIBUTE (
     p_collection_name IN VARCHAR2,
     p_seq IN NUMBER,
     p_attr_number IN NUMBER,
     p_date_value IN DATE);

Nota: Cualquier atributo de carácter que supere los 4000 caracteres se trunca a 4000 caracteres. Además, la cantidad de miembros agregados se basa en la cantidad de elementos en la primera matriz.

Donde:

Parámetro Descripción

p_collection_name

El nombre de la colección. La longitud máxima puede ser de 255 bytes. Los nombres de colección no distinguen entre mayúsculas y minúsculas, ya que el nombre de la colección se convierte a mayúsculas. Se devuelve un error si esta colección no existe con el nombre especificado del usuario actual y en la misma sesión.

p_seq

ID de secuencia del miembro de la colección que se va a actualizar.

p_attr_number

Número de atributo del atributo de miembro DATE que se actualizará. El valor válido es de 1 a 5. Cualquier número fuera de este rango se ignora.

p_date_value

Valor de atributo del atributo de miembro DATE que se actualizará.

Un ejemplo del uso de este procedimiento es:

BEGIN
     APEX_COLLECTION.UPDATE_MEMBER_ATTRIBUTE (
          p_collection_name => ‘Departments’,
          p_seq => 2,
          p_attr_number => 1,
          p_date_value => sysdate );
END;

 

También te puede gustar…

Share This