Это не красиво, но вы можете получить 100% одношаговое SQL-решение, защищающее от инъекций, подобное этому.Вы включаете CTE «критерий» в свой запрос, который анализирует список с запятыми в таблице.Затем вы можете использовать его в запросе типа «где столбец (выбрать элемент из критериев)»:
<code>with criteria as
(
select
substr(criteria_list, item_start, item_length) as item
from
(
select
criteria_list,
comma_pos + 1 as item_start,
nvl(next_comma_pos - 1, length(criteria_list)) - comma_pos as item_length
from
(
select
criteria_list,
comma_pos,
lead(comma_pos) over(order by comma_pos) as next_comma_pos
from
(
select
$1 as criteria_list,
instr($1, ',', 1, level) as comma_pos
from
dual
connect by
instr($1, ',', 1, level) > 0 and instr($1, ',', 1, level) <= instr($1, ',', -1)
union all
select
$1,
0
from
dual
)
)
)
)
select * from some_table where column in (select item from criteria)