首页 新闻 会员 周边 捐助

数据库递归添加数据

0
悬赏园豆:5 [已解决问题] 解决于 2013-09-12 11:36

字段名 字段类型 是否为空 主外键 备注
Nav_Id int  主 主键
Nav_Parent  Int    父节点
Nav_Title Char(20)   标题
Nav_Url Char(100)   连接
Nav_Statae Int    状态(默认0正常)
Nav_ Reserve Char(100)   备用

 

如何数据库递归添加数据,2级、3级菜单,怎么添加,和查询,谢谢!帮帮忙!谢谢了!

梦魔问世的主页 梦魔问世 | 初学一级 | 园豆:3
提问于:2013-09-11 11:42
< >
分享
最佳答案
0

插入可以用函数处理

查询这里有一个例子
http://www.cnblogs.com/downmoon/archive/2009/10/23/1588405.html

收获园豆:2
邀月 | 高人七级 |园豆:25475 | 2013-09-11 11:55
其他回答(3)
0
declare id int;
insert into MenuTable values(0,'Menu0','/Menu/0',0);
set id = @@identity;
insert into MenuTable values (id,'Menu1','/Menu/1',0);
收获园豆:1
sinhbv | 园豆:2579 (老鸟四级) | 2013-09-11 11:53
0

个人觉得还是用C#在代码中处理好,再插入。

查询时全部查出来,再C#代码中组合为树形。

收获园豆:1
幻天芒 | 园豆:37207 (高人七级) | 2013-09-11 13:04
0
 1 create proc sqlGetMenuTree
 2 (
 3     @p_pid id,   --上级菜单编号
 4     @p_level int --当前菜单登录(在显示的时候可能会用到)
 5     )
 6 as
 7 begin
 8 
 9     declare @v_pid uniqueidentifier
10     declare @v_level int
11     set @v_pid=@p_pid
12     set @v_level=@p_level
13 
14     declare @v_id uniqueidentifier
15     declare @v_name varchar(100)
16     declare @v_issys bit
17     declare crsr cursor local forward_only for
18         select col_id,col_name
19         from sys_menus
20         where col_pid=@p_pid
21         order by col_order
22     open crsr
23     fetch next from crsr into @v_id,@v_name
24     while(@@fetch_status=0 )
25     begin
26             insert into #temp_menu
27             select @v_id,@v_pid,@v_name,@v_level
28             declare @c_level int
29             set @c_level=@v_level+1
30             
31             exec sqlGetMenuTree @v_id,@c_level
32             fetch next from crsr into  @v_id,@v_name
33     end 
34     close crsr
35     deallocate crsr
36 end

 

 

如果单单初始化用的或数据量不大的可以考虑用一下游标

 


1
create table #temp_menu 2 ( 3 col_id uniqueidentifier, 4 col_pid uniqueidentifier, 5 col_name varchar(50), 6 col_level int, 7 ) 8 exec sqlGetMenuTree '0',0 9 select 10 col_level, 11 col_id, 12 col_name, 13 replicate('&nbsp;&nbsp;',col_level)+col_name as col_disname, 14 a.col_pid 15 from #temp_menu
收获园豆:1
反戈 | 园豆:168 (初学一级) | 2013-09-11 14:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册