sql >> Base de Datos >  >> RDS >> Oracle

¿Cómo crear y usar una lista de selección múltiple en APEX ORACLE?

Está el elemento de transporte . En el lado izquierdo, mostraría una lista de todos los empleados. Los botones de elementos le permiten mover todos (o solo algunos) al lado derecho del elemento. Una vez que envía la página, la lista de identificaciones de empleados se almacena en una columna de la tabla en forma de valores separados por dos puntos, por ejemplo

6547:8879:5587:9987

Esta es una forma sencilla de hacerlo. Sin embargo, una vez que tenga que hacer algo con esos valores, tienes que dividirlos en filas. Sin embargo, no es un problema. Aquí hay una consulta:

SQL> with emps (shuttle_item) as
  2    (select '6547:8879:5587:9987' from dual)
  3  select regexp_substr(shuttle_item, '[^:]+', 1, level) one_item
  4  from emps
  5  connect by level <= regexp_count(shuttle_item, ':') + 1;

ONE_ITEM
---------------------------------------------------------------------
6547
8879
5587
9987

SQL>

O bien, puede crear un formulario tabular que también muestre a todos los empleados y tenga casillas de verificación al comienzo de cada línea. A continuación, crearía un proceso que, en un bucle, almacena los valores seleccionados en una tabla temporal Mencionaste. Por ejemplo:

-- F01 = row selector. If you check 1st and 3rd row, f01.count = 2 (2 rows checked)
--       f01(1) = 1 (row #1), f01(2) = 3 (row #3)
-- F02 = EMP_ID. f02(1) = EMP_ID that belongs to employee in 1st row, 
--       f02(3) = EMP_ID that belongs to emplyee in 3rd row
declare
  l_id number;
begin
  for j in 1 .. apex_application.g_f01.count
  loop
    l_id := apex_application.g_f02(apex_application.g_f01(j));

    insert into temp_table (emp_id) values (l_id);
  end loop;
end;