SQL数据库树型结构数据处理的存储过程_SQL SERVER数据库_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

SQL数据库树型结构数据处理的存储过程[图]

作者:黑客防线网安SQL维护基地 来源:黑客防线网安SQL维护基地 浏览次数:0

本篇关键词:存储过程结构数据库
黑客防线网安网讯:  我们在平常的系统开发中常常会遇到像无限级分类这样的树型结构数据,现提供一个可用的数据库存储过程,可以完成树型结构数据的排序。  环境:windows7+Sql Server 2008  说明:下面...

  我们在平常的系统开发中常常会遇到像无限级分类这样的树型结构数据现提供一个可用的数据库存储过程可以完成树型结构数据的排序

  环境: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, 0, CONVERT(TEXT, N'A'))
INSERT [dbo].[categories] ([category_id], [parent_id], [category_name]) VALUES (2, 0, CONVERT(TEXT, N'B'))
INSERT [dbo].[categories] ([category_id], [parent_id], [category_name]) VALUES (3, 1, CONVERT(TEXT, N'AA'))
INSERT [dbo].[categories] ([category_id], [parent_id], [category_name]) VALUES (4, 3, CONVERT(TEXT, N'AAA'))
INSERT [dbo].[categories] ([category_id], [parent_id], [category_name]) VALUES (5, 2, CONVERT(TEXT, N'BB'))
INSERT [dbo].[categories] ([category_id], [parent_id], [category_name]) VALUES (6, 1, CONVERT(TEXT, N'AA2'))
INSERT [dbo].[categories] ([category_id], [parent_id], [category_name]) VALUES (7, 1, CONVERT(TEXT, N'AA3'))
INSERT [dbo].[categories] ([category_id], [parent_id], [category_name]) VALUES (8, 3, CONVERT(TEXT, N'AAA2'))
INSERT [dbo].[categories] ([category_id], [parent_id], [category_name]) VALUES (9, 4, CONVERT(TEXT, N'AAA3'))
INSERT [dbo].[categories] ([category_id], [parent_id], [category_name]) VALUES (10, 2, CONVERT(TEXT, 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

    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-10532-1.html
网站维护教程更新时间:2012-03-21 03:05:43  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer