Oracle
 sql >> Database >  >> RDS >> Oracle

Come creare e utilizzare un elenco di selezione multipla in APEX ORACLE?

C'è l'oggetto navetta . Sul lato sinistro, visualizzerai l'elenco di tutti i dipendenti. I pulsanti degli oggetti ti consentono di spostarli tutti (o solo alcuni) sul lato destro dell'oggetto. Dopo aver inviato la pagina, l'elenco degli ID dipendente viene archiviato in una colonna di tabella sotto forma di valori separati da due punti, ad esempio

6547:8879:5587:9987

Questo è un modo semplice per farlo. Tuttavia, una volta che devi effettivamente fare qualcosa con quei valori, devi dividerli in righe. Non è un problema, però. Ecco una domanda:

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>

Oppure puoi creare un modulo tabellare che mostri anche tutti i dipendenti e abbia caselle di controllo all'inizio di ogni riga. Creerai quindi un processo che, in un ciclo, memorizza i valori selezionati in una tabella temporanea hai nominato. Ad esempio:

-- 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;