Как я понимаю, вы используете список значений в качестве источника своих флажков. Допустим, у вас есть следующие значения:
return value display value
----------------------------
123 andAND
456 Dibya
789 Anshul
321 aafirst
555 Anuj
Когда вы выбираете несколько значений, APEX помещает их возвращаемые значения в строку и разделяет их с помощью :
. Таким образом, для случая на вашем скриншоте значение в элементе P12_NEW
будет 123:555
. Чтобы разделить эти значения, вы можете использовать следующий запрос:
select regexp_substr(:P12_NEW, '[^:]+', 1, level) values
from dual
connect by regexp_substr(:P12_NEW, '[^:]+', 1, level) is not null
Результат будет:
values
------
123
555
Далее необходимо поместить эти значения в таблицу usr_amt
(скажем, со столбцами user_id
и amount
, а сумма вводится в элемент P12_AMOUNT
):
merge into usr_amt t
using (select regexp_substr(:P12_NEW, '[^:]+', 1, level) user_id
from dual
connect by regexp_substr(:P12_NEW, '[^:]+', 1, level) is not null
) n on (n.user_id = t.user_id)
when matched then update
set t.amount = :P12_AMOUNT
when not matched then insert (user_id, amount)
values (n.user_id, :P12_AMOUNT)
Этот запрос будет искать каждый user_id
, выбранный в таблице, и, если пользователь там присутствует, обновляет соответствующее значение до значения элемента :P12_AMOUNT
, если его нет - вставляет строку с user_id
и значение.