SQL Server树型结构数据处理的存储过程

来源:asp之家 时间:2010-01-26 13:40:00 

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

环境: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 <span style

标签:SQLServer,树,数据,存储过程
0
投稿

猜你喜欢

  • vue实现全屏滚动效果(非fullpage.js)

    2024-05-28 15:46:00
  • PHP扩展Swoole实现实时异步任务队列示例

    2023-11-10 05:11:22
  • 解析mysql数据库还原错误:(mysql Error Code: 1005 errno 121)

    2024-01-15 00:13:13
  • 基于JS脚本语言的基础语法详解

    2024-06-05 10:01:53
  • 软件测试面试如何测试网页的登录页面

    2023-12-10 20:45:30
  • 教你用python提取txt文件中的特定信息并写入Excel

    2021-02-11 00:41:41
  • Python使用matplotlib实现交换式图形显示功能示例

    2023-04-25 06:10:49
  • 浅谈Express.js解析Post数据类型的正确姿势

    2024-06-05 09:52:18
  • 在Django下测试与调试REST API的方法详解

    2023-05-19 16:09:32
  • JavaScript 数组中最大最小值

    2024-04-27 15:23:56
  • SQLSERVER数据库备份后无法还原的解决办法

    2024-01-21 14:05:01
  • 用SQL语句查询数据库中某一字段下相同值的记录方法

    2024-01-23 14:49:54
  • git pull时冲突的几种解决方式(小结)

    2022-10-12 04:53:53
  • 在Python 中将类对象序列化为JSON

    2023-06-11 16:41:32
  • Pandas实现一列数据分隔为两列

    2021-01-06 04:31:36
  • Python迭代器与生成器基本用法分析

    2022-07-06 20:19:50
  • Pycharm生成可执行文件.exe的实现方法

    2023-07-19 12:09:54
  • Vue中使用和移除总线Bus的注意事项详解

    2024-06-05 15:30:33
  • Python遍历文件夹 处理json文件的方法

    2022-02-19 16:08:40
  • Python基于更相减损术实现求解最大公约数的方法

    2022-10-31 16:13:24
  • asp之家 网络编程 m.aspxhome.com