Знание вашей истории здесь (Oracle Apex) и просмотр roleid = 1:2
, который выглядит как элемент челнока Apex или элемент списка выбора, который допускает множественный выбор.Если это так, то вам придется разделить эти значения, разделенные двоеточиями, на строки и использовать их, как в этом примере SQL * Plus:
SQL> var p1_roleid varchar2(10);
SQL> exec :p1_roleid := '1:2';
PL/SQL procedure successfully completed.
SQL> with tblaccess (menuid, roleid) as
2 (select 2.03, 2 from dual union all
3 select 2.04, 2 from dual union all
4 select 2.05, 1 from dual union all
5 select 2.06, 3 from dual
6 )
7 select menuid
8 from tblaccess
9 where roleid in (select regexp_substr(:P1_ROLEID, '[^:]+', 1, level)
10 from dual
11 connect by level <= regexp_count(:P1_ROLEID, ':') + 1
12 )
13 order by menuid;
MENUID
----------
2,03
2,04
2,05
SQL>
В Apex это будет выглядеть как
select menuid
from tblaccess
where roleid in (select regexp_substr(:P1_ROLEID, '[^:]+', 1, level)
from dual
connect by level <= regexp_count(:P1_ROLEID, ':') + 1
)
order by menuid;