Oracle 迭代查询, 以后台菜单作为示例
这是要准备的sql
1 create tabletbl_menu(2 id number primary key,3 parent_id number default 0,4 name varchar2(20) not null,5 direntions clob,6 info1 clob,7 info2 clob,8 info3 clob9 );10
11 createsequence seq_tbl_menu;12
13 insert into tbl_menu (id, name, direntions) values (seq_tbl_menu.nextval, ‘虚拟根目录‘, ‘所有菜单的虚拟根目录其他所有菜单都直接或间接的是它的子菜单‘);14 insert into tbl_menu (id, parent_id, name) values (seq_tbl_menu.nextval, 1, ‘权限管理‘);15
16 insert into tbl_menu (id, parent_id, name) values (seq_tbl_menu.nextval, 2, ‘资源管理‘);17 insert into tbl_menu (id, parent_id, name) values (seq_tbl_menu.nextval, 2, ‘角色管理‘);18 insert into tbl_menu (id, parent_id, name) values (seq_tbl_menu.nextval, 2, ‘用户管理‘);19
20 insert into tbl_menu (id, parent_id, name) values (seq_tbl_menu.nextval, 3, ‘菜单页面管理‘);21 insert into tbl_menu (id, parent_id, name) values (seq_tbl_menu.nextval, 3, ‘非菜单页面管理‘);22
23 insert into tbl_menu (id, parent_id, name) values (seq_tbl_menu.nextval, 4, ‘角色管理‘);24 insert into tbl_menu (id, parent_id, name) values (seq_tbl_menu.nextval, 4, ‘角色权限‘);25
26 insert into tbl_menu (id, parent_id, name) values (seq_tbl_menu.nextval, 5, ‘用户管理‘);27 insert into tbl_menu (id, parent_id, name) values (seq_tbl_menu.nextval, 5, ‘用户权限‘);
View Code
这是查询的sql
1 select
2 id,3 parent_id,4 case
5 when parent_id = 0 then ‘------‘||name6 when parent_id = 1 then ‘------------‘||name7 when parent_id != 1 or parent_id != 0 then ‘------------------------‘||name8 else name end
9 fromtbl_menu10 start with id = 1
11 connect by prior id =parent_id12 order by id
View Code
这是效果
ID PARENT_ID CASEWHENPARENT_ID=0THEN‘------
10------虚拟根目录
21------------权限管理
32------------------------资源管理
42------------------------角色管理
52------------------------用户管理
63------------------------菜单页面管理
73------------------------非菜单页面管理
84------------------------角色管理
94------------------------角色权限
105------------------------用户管理
115------------------------用户权限
原文:http://www.cnblogs.com/linma/p/4288440.html