Вы отправляете Oracle одну строку, которую вы sh будете использовать в качестве нескольких значений. Поскольку Oracle не имеет никакого способа узнать это, вы должны настроить его. Это означает, что вы должны отделить строку. Это не так сложно.
-- parse string demo
with parm as
(select '&par_value' pv from dual)
, col_list as
( select regexp_substr(pv,'[^,]+', 1, level) val from parm
connect by regexp_substr(pv, '[^,]+', 1, level) is not null
)
Select * from col_list;
Теперь для вашего конкретного случая используйте те же функции синтаксического анализа, но вставьте их в условие where.
with parm as
(select '&par_value' pv from dual)
, col_list as
( select regexp_substr(pv,'[^,]+', 1, level) val from parm
connect by regexp_substr(pv, '[^,]+', 1, level) is not null
)
Select
<your select>
where
WHERE m.TCompany in (select val from col_list);