无限级分类的非递归实现(存储过程版)
日期:2006年7月25日 作者: 查看:[大字体 中字体 小字体]-
或多或少都做过树状目录、产品分类之类的二级或三级菜单,如果遇到更多级的分类,就一般使用递归了。在程序中使用递归或多或少会增加一些性能上的开销。
之前我用ASP.net在程序中实现过非递归的无限级分类目录,但考虑到移植性不强,就改成了存储过程,发出来大家共同研究一下,到目前为止,测试过程中还没发现问题,另外,代码方面没经过什么优化。
通常情况下,我们更多的操作是读取目录,所以,在下面的实现中,读取我们只需要一Select语句就够了,不使用递归,理论上无限级~!
======================================================================
表结构:
表名:Tb_Column
表结构(所有字段非空):
Column_ID int 主键(注:非标识)
Column_Name nvarchar(50)分类名称
Parent_ID int 父分类ID(默认值0)
Column_Path nvarchar(1000) 分类路径
Column_Depth int分类深度(默认值0)
Column_Order int排序(默认值0)
Column_Intro nvarchar(1000)分类说明=============================================================
存储过程一:新建分类CREATE PROCEDURE sp_Column_Insert
(
@Parent_ID int,
@Column_Name nvarchar(50),
@Column_Intro nvarchar(1000)
)
AS
Declare @Err As int
Set @Err=0Begin Tran
--通过现有记录获取栏目ID
Declare @Column_ID As int
Declare @Column_Depth As int
Select @Column_ID = Max(Column_ID) From Tb_Column
IF @Column_ID Is Not Null
Set @Column_ID = @Column_ID+1
Else
Set @Column_ID = 1--判断是否是顶级栏目,设置其Column_Path和Column_Order
Declare @Column_Path As nvarchar(1000)
Declare @Column_Order As int
IF @Parent_ID = 0
Begin
Set @Column_Path =Ltrim(Str(@Column_ID))
Select @Column_Order = Max(Column_Order) From Tb_Column
IF @Column_Order Is Not Null
Set @Column_Order = @Column_Order + 1
Else --如果没有查询到记录,说明这是第一条记录
Set @Column_Order = 1--深度
Set @Column_Depth = 1
End
Else
Begin
--获取父节点的路径和深度
Select @Column_Path = Column_Path ,@Column_Depth = Column_Depth From Tb_Column WhereColumn_ID=@Parent_ID
IF @Column_Path Is Null - [1] [2] [3] [4] [5] [6] [7] [8] 下一页
-
- 无限级分类的非递归实现(存储过程版) 相关文章:
- ·非主流ps教程实用的技巧大全
- ·Fireworks教程 液体金属表面特效制作
- ·Fireworks教程:立体质感水晶的制作过程
- ·Windows Vista停止报告程序问题的技巧方法
- ·非主流ps教程:制作红绿色调效果
- ·Photoshop液化滤镜校正歪斜的人物头像教程
- ·CSS教程:CSS中的定位(position)
- ·Flash制作交互动画教程 星座查询器
- ·Photoshop教程 绘制可爱半透明圣诞帽
- ·Linux下限制Root用户进行远程登陆
- 无限级分类的非递归实现(存储过程版) 相关软件
- ·《QQ游戏2007》beta1安装程序
- ·怪叔叔WII游戏教程之六-勇者斗恶龙
- ·《风色幻想6》完整流程攻略
- ·PSP自动更换壁纸插件及教程
- ·PS教程
- ·传奇女子的冒险经历及心路历程《罪恶天使》
- ·潘多拉神奇电池记忆棒制作必要程序
- ·名人讲述自己的读书历程:《与名人一起读书》
- ·卧底警察心路历程和传奇见闻:《卧底》
- ·PS文字特效教程(全7辑)6-7
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
下一篇:DateDiff in c#
精品推荐
热点TOP10
- ·Transact-SQL语句总汇
- ·无限级分类的非递归实现(存储过程版)
- ·列出SQL SERVER 所有表,字段名,主键,类型,长度,小数位数等信息
- ·什么是SQL注入法攻击
- ·学习SQL语句之SQL语句大全
- ·SQL存储过程的概念,创建,调用,管理,删除,优点
- ·客户端回调实现gridView无刷新分页
- ·关于SQL语句的优化方式
- ·精妙SQL语句收集
- ·2台服务器数据库如何同步?
- ·SQL分页语句
- ·Delphi程序执行时实时生成报表
- ·SQL语句参考及记录集对象详解
- ·ADO连接数据库字符串大全
- ·VB.NET的数据库基础编程(1)
- ·sqlldr加载数据到不同表的问题
- ·解决SQL Server常见的七个经典问题
- ·SQL数据库高级教程:学习 SQL 函数
- ·SQL数据库高级教程:学习 SQL IN
- ·解析用SSMA移植Acceses到SQL几点问题
特别推荐
- ·学习SQL语句之SQL语句大全
- ·数据备份失败的五个原因及解决办法
- ·解决SQL Server常见的七个经典问题
- ·SQL存储过程的概念,创建,调用,管理,删除,优点
- ·带你轻松接触13个数据库术语
- ·如何恢复系统数据库如何恢复系统数据库?
- ·通过实例讲解由浅入深学会存储过程
- ·学会三个范式快速成为数据库设计的高手
- ·SQL数据库应聘人员面试时经常被问的问题
- ·问答:查询分析器不能单步调试的的原因
- ·数据库基础知识:SQL中的IIF语句详解
- ·WindowsXP+IIS+PHP5+MySQL5+Zend+GD库+phpMyAdmin+PHPWind 5.3 安装教程
- ·你知道吗?优化数据库前的十大问题
- ·自动备份注意事项让你远离误删数据噩梦
- ·关于MSSQL数据库日志满的快速解决办法
- ·SQL安全设置攻略
- ·SQL注入的不常见方法
- ·关于SQL语句的优化方式
- ·SQL优化34条
- ·查询及删除重复记录的方法
