Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie erstelle und verwende ich eine Mehrfachauswahlliste in APEX ORACLE?

Da ist der Shuttle-Artikel . Auf der linken Seite würden Sie eine Liste aller Mitarbeiter anzeigen. Mit den Elementschaltflächen können Sie alle (oder nur einige) auf die rechte Seite des Elements verschieben. Nachdem Sie die Seite gesendet haben, wird die Liste der Mitarbeiter-IDs in einer Tabellenspalte in Form von durch Doppelpunkte getrennten Werten gespeichert, z. B.

6547:8879:5587:9987

Dies ist eine einfache Möglichkeit, dies zu tun. Aber einmal muss man es tatsächlich tun etwas mit diesen Werten, müssen Sie sie in Zeilen aufteilen. Aber kein Problem. Hier ist eine Abfrage:

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>

Oder Sie erstellen ein tabellarisches Formular, das auch alle Mitarbeiter anzeigt und Checkboxen am Anfang jeder Zeile hat. Sie würden dann einen Prozess erstellen, der - in einer Schleife - ausgewählte Werte in einer temporären Tabelle speichert du erwähntest. Zum Beispiel:

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