When you are using the apex_item.select_list function (or any another function of apex_item package) APEX allows you to use apex_application.g_fXX collections, where XX - number, which you pass as a first parameter. These collections contain data from the tabular form and could be accessed in PL/SQL after the page submit.
Let's say we have a table:
create table tab_form (
s_id number,
department_id number,
field_to_update varchar2(100));
insert into tab_form (s_id, department_id, field_to_update) values (1, 1, 'field is not updated');
insert into tab_form (s_id, department_id, field_to_update) values (1, 2, 'field is not updated');
insert into tab_form (s_id, department_id, field_to_update) values (1, 3, 'field is not updated');
insert into tab_form (s_id, department_id, field_to_update) values (2, 1, 'field is not updated');
insert into tab_form (s_id, department_id, field_to_update) values (2, 2, 'field is not updated');
insert into tab_form (s_id, department_id, field_to_update) values (2, 3, 'field is not updated');
insert into tab_form (s_id, department_id, field_to_update) values (3, 1, 'field is not updated');
insert into tab_form (s_id, department_id, field_to_update) values (3, 2, 'field is not updated');
insert into tab_form (s_id, department_id, field_to_update) values (4, 3, 'field is not updated');
You need to do following. Create a report with a query like this:
select APEX_ITEM.TEXT(1, s_id) S_ID,
APEX_ITEM.TEXT(2, department_id) DEPARTMENT_ID,
FIELD_TO_UPDATE,
APEX_ITEM.SELECT_LIST(3, null, 'Approve;0,Reject;1', null, 'YES', null, '%') ar
from TAB_FORM
Using apex_item package initiates using of collections g_f01, g_f02 and g_f03. Next, create a button to submit and a process, which will be executed, when the Submit button is pressed. The process could contain a code like this:
begin
forall i in 1 .. apex_application.g_f03.count
update tab_form
set field_to_update = case when apex_application.g_f03(i) = '0' then 'approved by the user'
when apex_application.g_f03(i) = '1' then 'rejected by the user'
else 'the user hasn''t decided yet' end
where s_id = apex_application.g_f01(i)
and department_id = apex_application.g_f02(i);
end;
In this code, you can implement any logic you need to process user's input.
You can see this example on the page here: https://apex.oracle.com/pls/apex/f?p=34599:8
The Submit button executes the code above, the Reset button changes values to default.