首先创建 一张表menu记录菜单的层级情况。 表结构如下: menu_id number, parent_id number, menu_name nvarchar2(20)
插入数据: insert into MENU (MENU_ID, PARENT_ID, MENU_NAME) values (1, null, 'AAAA'); insert into MENU (MENU_ID, PARENT_ID, MENU_NAME) values (2, 1, 'BBBB'); insert into MENU (MENU_ID, PARENT_ID, MENU_NAME) values (3, 1, 'CCCC'); insert into MENU (MENU_ID, PARENT_ID, MENU_NAME) values (4, 1, 'DDDD'); insert into MENU (MENU_ID, PARENT_ID, MENU_NAME) values (5, 2, 'EEEE'); insert into MENU (MENU_ID, PARENT_ID, MENU_NAME) values (6, 2, 'FFFF'); insert into MENU (MENU_ID, PARENT_ID, MENU_NAME) values (7, 2, 'GGGG'); insert into MENU (MENU_ID, PARENT_ID, MENU_NAME) values (8, 3, 'HHHH'); commit;
查询语句: select rpad(' ',(level-1)*3)||menu_name from menu connect by parent_id = prior menu_id start with parent_id is null
connect by 子句定义表中的各个黄是如何相互联系的 start with 子句定义数据黄查询的初始起点 level 表示查询深度
原文:http://louisyoo.blog.ccidnet.com/blog-htm-itemid-207639-do-showone-type-blog-uid-41414.html
|