如何在ORACLE APEX中通过SQL查询获取导航菜单列表?
搞定Oracle APEX导航菜单查询的正确姿势
嘿,刚好对Oracle APEX的系统视图熟得很,这就给你说清楚怎么查导航菜单——APEX里这类信息大多存在专门的系统视图里(官方推荐用视图查询,比直接碰底层表更稳定):
核心视图:
APEX_APPLICATION_MENUS
这个视图存了应用里所有顶级菜单的基础信息,比如菜单ID、名称、所属应用ID、菜单类型(标准/列表式等)。想快速枚举所有菜单的话,用这个就够了:SELECT menu_id, menu_name, application_id, menu_type FROM APEX_APPLICATION_MENUS WHERE application_id = :YOUR_APP_ID; -- 替换成你的实际应用ID查具体菜单项:
APEX_APPLICATION_MENU_ENTRIES
要是你需要菜单里的具体条目(比如每个菜单下的子选项、跳转目标、启用状态),就得关联这个视图。它能拿到条目标签、页面ID/URL、是否禁用、排序顺序这些关键信息:SELECT m.menu_name AS 菜单名称, me.entry_label AS 菜单项标签, me.target AS 跳转目标, me.is_enabled AS 是否启用, me.sequence AS 排序顺序 FROM APEX_APPLICATION_MENUS m JOIN APEX_APPLICATION_MENU_ENTRIES me ON m.menu_id = me.menu_id WHERE m.application_id = :YOUR_APP_ID ORDER BY m.menu_name, me.sequence;查菜单项权限:
APEX_APPLICATION_MENU_ENTRY_ROLES
如果要排查哪些角色能访问特定菜单项,这个视图就派上用场了,它关联了菜单项和对应的授权角色:SELECT me.entry_label AS 菜单项标签, r.role_name AS 授权角色 FROM APEX_APPLICATION_MENU_ENTRIES me JOIN APEX_APPLICATION_MENU_ENTRY_ROLES r ON me.entry_id = r.entry_id WHERE me.application_id = :YOUR_APP_ID;
小提示
记得把查询里的:YOUR_APP_ID换成你实际的APEX应用ID;另外这些视图属于APEX的系统schema(比如APEX_230100,具体取决于你的APEX版本),普通用户需要有查询权限才能访问,必要时可以切换到对应schema或者联系管理员赋权。
内容的提问来源于stack exchange,提问作者kamran ijaz
相关产品推荐
相关产品推荐

