Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como criar e usar uma lista de seleção múltipla no APEX ORACLE?


Há o item de transporte . No lado esquerdo, você exibiria a lista de todos os funcionários. Os botões de item permitem que você mova todos (ou apenas alguns deles) para o lado direito do item. Depois de enviar a página, a lista de IDs de funcionários é armazenada em uma coluna da tabela em uma forma de valores separados por dois pontos, por exemplo
6547:8879:5587:9987

Esta é uma maneira simples de fazer isso. No entanto, quando você realmente fazer algo com esses valores, você tem que dividi-los em linhas. Não é um problema, no entanto. Aqui está uma 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>

Ou você pode criar um formulário tabular que também exiba todos os funcionários e tenha caixas de seleção no início de cada linha. Você então criaria um processo que - em um loop - armazena os valores selecionados em uma tabela temporária você mencionou. Por exemplo:
-- 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;