APEX_APPLICATION: checkboxes (G_F01)

Uno de los usos más comunes , y potentes, de APEX_APPLICATION es el procesamiento de selecciones múltiples realizadas desde un reporte mediante checkboxes.
Cuando el usuario marca varias filas y hace “Submit”, Oracle APEX envía los valores seleccionados al backend usando arrays globales, siendo el más utilizado G_F01.
Este comportamiento no puede reemplazarse con v(), ya que v() solo lee un valor por item, mientras que G_Fxx permite manejar estructuras tipo lista o tabla.
Ejemplo: selección múltiple de empleados
Tenemos un “Interactive Report“ que lista empleados y permite seleccionar varios usando checkboxes.
SELECT
apex_item.checkbox2(
p_idx => 1,
p_value => e.nombre
) AS sel,
e.nombre,
e.estado AS nuevo_estado
FROM empleados e

¿Qué hace este reporte?
Cada checkbox marcado envía su valor a APEX_APPLICATION.G_F01
p_value define qué dato viaja al backend
En este caso, se envía el nombre del empleado
A tener en cuenta.*
Solo los checkboxes **marcados se envían en G_F01.
Las filas no seleccionadas no existen** para el proceso PL/SQL.*
Procesamiento en el backend
Se crea un procedimiento en que podemos llamar “PP_CARGAR_COLL” de tipo excecute code.


Lo que hara
Recorrer solo los registros seleccionados
Guardarlos temporalmente en una colección APEX
Prepararlos para procesamiento posterior (aprobación, confirmación, etc.)
Procedimiento Completo
begin
apex_collection.create_or_truncate_collection(p_collection_name => 'COLL_PRUEBA'); -- Crear o limpiar la colección
if apex_application.g_f01.COUNT = 0 then --Validamos si al menos de marco una fila
raise_application_error(-20001,
'Debe seleccionar al menos un registro.');
end if;
for i in 1 .. apex_application.g_f01.COUNT loop --Recorrer únicamente los checkboxes marcados
apex_collection.add_member(p_collection_name => 'COLL_PRUEBA',--guardamos los marcados en la collection COLL_PRUEBA
p_c001 => apex_application.g_f01(i));
end loop;
end;
Esto hace el procedimiento
G_F01.COUNT indica cuántos checkboxes fueron marcados
El loop recorre solo esos valores
Cada valor seleccionado se guarda en la colección COLL_PRUEBA
p_c001 almacena el dato enviado desde el checkbox
Al ejecutar la pagina, “Submit“, las filas marcadas ya estaran insertadas en la collection lo podemos comprobar usando las herramientas de desarrollador de APEX. En la barra de herramientas hacemos clic en “Session“ y “View Session State“.


Se abrira esta ventana.

En la opcion view, seleccionamos “Collections“ y hacemos clic sobre el boton “Set“ y la pantalla se va a refrescar.

Despues de refrescar podremos ver el contenido de las colleciones creadas y asociadas a nuestra sesion

¿Por qué usar colecciones APEX?
Las colecciones son ideales cuando:
Necesitás almacenar selecciones temporales
Querés mostrar una pantalla de confirmación
El proceso se divide en varios pasos
No querés impactar tablas definitivas aún
Ejemplo de lectura posterior:
select c001 as nombre_empleado
from apex_collections
where collection_name = 'COLL_PRUEBA';
¿De que me serviria este patrón?
Este enfoque (checkbox + G_F01 + colección) es muy común en:
Aprobaciones masivas
Eliminación múltiple de registros
Selección de ítems para facturación
Migraciones desde Oracle Forms
Procesos en varias pantallas (wizard)
Reportes interactivos con acciones personalizadas
Buenas prácticas al usar G_F01
Validar siempre que G_F01.COUNT > 0, es decir, que existe.
Usar colecciones para estados intermedios.
Usar apex_debug para diagnóstico.
No asumir que siempre habrá datos.
No mezclar G_Fxx con lógica compleja innecesaria.
APEX_APPLICATION.G_F01 permite capturar listas dinámicas de datos enviadas desde el frontend de manera simple, directa y controlada.
Cuando se utiliza correctamente, especialmente en combinación con colecciones APEX, se transforma en un patrón sólido para implementar procesos masivos, selecciones múltiples y flujos de trabajo en varios pasos.
Este enfoque no solo resuelve problemas comunes en reportes interactivos y grillas personalizadas, sino que también facilita la migración desde Oracle Forms y la construcción de soluciones más claras, mantenibles y escalables dentro de Oracle APEX.
Si este artículo te ayudó a entender mejor cómo funcionan los G_Fxx y cuándo usarlos, compartilo con tu equipo o con otros desarrolladores APEX a los que les pueda servir.
Gracias por leer , ¡seguimos explorando APEX!






