我们在平常的系统开发中常常会遇到像无限级分类这样的树型结构数据,现提供一个可用的数据库存储过程,可以完成树型结构数据的排序。
环境:windows7+sql Server 2008
说明:下面代码已经转换成sql server2000的脚本,处理效果如下,看sortname字段结果,代码经过测试。
创建树型表:
CREATE table [dbo].[categorIEs]([category_ID] [int] IDENTITY(1,1) NOT NulL,
[parent_ID] [int] NulL,
[category_name] [varchar](500) NulL,
CONSTRAINT [PK_categorIEs] PRIMARY KEY CLUSTERED
(
[category_ID] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO
插入测试数据:
INSERT [dbo].[categorIEs] ([category_ID],[parent_ID],[category_name]) VALUES (1,CONVERT(TEXT,N'A'))INSERT [dbo].[categorIEs] ([category_ID],[category_name]) VALUES (2,N'B'))
INSERT [dbo].[categorIEs] ([category_ID],[category_name]) VALUES (3,1,N'AA'))
INSERT [dbo].[categorIEs] ([category_ID],[category_name]) VALUES (4,3,N'AAA'))
INSERT [dbo].[categorIEs] ([category_ID],[category_name]) VALUES (5,2,N'BB'))
INSERT [dbo].[categorIEs] ([category_ID],[category_name]) VALUES (6,N'AA2'))
INSERT [dbo].[categorIEs] ([category_ID],[category_name]) VALUES (7,N'AA3'))
INSERT [dbo].[categorIEs] ([category_ID],[category_name]) VALUES (8,N'AAA2'))
INSERT [dbo].[categorIEs] ([category_ID],[category_name]) VALUES (9,4,N'AAA3'))
INSERT [dbo].[categorIEs] ([category_ID],[category_name]) VALUES (10,N'BB2'))
创建存储过程,表中的level为级别深度,通过生成的临时表与分类表关联显示结果:
CREATE PROCEDURE [dbo].[Get_TreeData]AS
BEGIN
--创建临时表
create table #tmp_table (ID int,[level] int)
declare @LevelValue int
set @LevelValue=0
insert #tmp_table select 0,@LevelValue
--将数据写入到临时表
while @@rowcount>0
begin
set @LevelValue=@LevelValue+1
insert #tmp_table select a.category_ID,@LevelValue
from categorIEs as a,#tmp_table as b
where a.parent_ID=b.[ID] and b.[level]=@LevelValue-1
end
--select * from #tmp_table
select a.category_ID,a.parent_ID,a.category_name,b.[level],
case
when a.parent_ID=0 then a.category_name else replicate('-',b.[level])+a.category_name
end as sortname
from categorIEs as a join #tmp_table as b on a.category_ID=b.ID
order by sortname
return
END 总结
以上是内存溢出为你收集整理的SQL Server 树形结构数据处理的存储过程全部内容,希望文章能够帮你解决SQL Server 树形结构数据处理的存储过程所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)