在给定的图像中,我已经附加了我的表模式, 我想针对适当的角色获取menuid。
Stream
它应该返回 MenuId 2.03, 2.04和 2.05 因为这些MenuId包含RoleId为1和2
请帮助我,使MenuId与角色无关
答案 0 :(得分:1)
使用in
条件
Select MenuId from tblAccess where RoleId in (1,2);
答案 1 :(得分:0)
在此处(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;