无限级分类(非递归算法/存储过程版/GUID主键)完整数据库示例_(3)删除记录

简介: -- ============================= -- Author:   -- Description:  -- Return     : 0删除正常,-1父类下还有子类 -- =========================== Alter PROCEDURE [dbo].

-- =============================
-- Author:  <杨俊明,Jimmy.yang@cntvs.com or yjmyzz@126.com>
-- Description: <无限级分类_删除分类>
-- Return     : 0删除正常,-1父类下还有子类
-- ===========================
Alter PROCEDURE [dbo].[up_Class_DeleteEx]
 @clsId uniqueidentifier, --要删除的分类
 @withChild bit     --是否级联删除子类
AS
BEGIN
 SET NOCOUNT ON;
 Declare @so_MaxOrders int;
 Declare @s_Childs int;
 Declare @clsType Nvarchar(50);
 Declare @O_RootId int;
 
 Select @O_RootId = F_RootId,@clsType = F_Type From T_Class where F_ID=@clsId;

 If (@WithChild=1)  
  begin
   Select @so_maxOrders=max(F_orders) From T_class Where F_ID=@clsId or F_ParentIdStr like '%' + Convert(varchar(50),@clsId) + '%'; --得到自身系的最大排序号
   Select @s_Childs= Count(F_ID) from t_Class Where F_ID=@clsId or F_ParentIdStr like '%' + Convert(varchar(50),@clsId) + '%';
   Delete from T_Class where ','+F_parentIdStr+',' like '%' + convert(varchar(100),@clsId) + '%'
   Delete from T_Class Where F_Id=@ClsId 
   Update T_Class Set F_Orders = F_Orders - @s_childs where F_Type=@clsType And F_RootId=@O_RootId And F_Orders > @so_maxOrders;
   return 0
  end
 else  
  --如果不级联删除,又有子节点,则返回-1 
  If exists(select F_id from T_Class where ',' + F_parentIdStr + ',' like '%' + convert(varchar(100),@clsId) + '%')  
   return -1
  else
   begin
    Select @so_maxOrders=max(F_orders) From T_class Where F_ID=@clsId or F_ParentIdStr like '%' + Convert(varchar(50),@clsId) + '%'; --得到自身系的最大排序号
    Select @s_Childs= 1;
    Delete from T_Class Where F_Id=@ClsId;
    Update T_Class Set F_Orders = F_Orders - @s_childs where F_Type=@clsType And F_RootId=@O_RootId And F_Orders > @so_maxOrders;
    return 0
   end
   
END

目录
相关文章
|
1月前
|
机器学习/深度学习 算法
递归算法题练习(数的计算、带备忘录的递归、计算函数值)
递归算法题练习(数的计算、带备忘录的递归、计算函数值)
|
1月前
|
存储 SQL 关系型数据库
【MySQL 数据库】9、存储过程
【MySQL 数据库】9、存储过程
204 0
|
1月前
|
机器学习/深度学习 数据采集 监控
机器学习-特征选择:如何使用递归特征消除算法自动筛选出最优特征?
机器学习-特征选择:如何使用递归特征消除算法自动筛选出最优特征?
58 0
|
1月前
|
存储 缓存 算法
【数据结构与算法】【小白也能学的数据结构与算法】递归 分治 迭代 动态规划 无从下手?一文通!!!
【数据结构与算法】【小白也能学的数据结构与算法】递归 分治 迭代 动态规划 无从下手?一文通!!!
|
7天前
|
算法
算法系列--递归(一)--与链表有关(上)
算法系列--递归(一)--与链表有关
17 0
|
11天前
|
存储 算法 搜索推荐
【数据结构与算法】归并排序(详解:递归与非递归的归并排序 | 赠:冒泡排序和选择排序)
【数据结构与算法】归并排序(详解:递归与非递归的归并排序 | 赠:冒泡排序和选择排序)
|
25天前
|
存储 编解码 自然语言处理
【软件设计师备考 专题 】深入理解数据压缩、递归和图的相关算法
【软件设计师备考 专题 】深入理解数据压缩、递归和图的相关算法
62 0
|
28天前
|
存储 SQL 数据挖掘
视图、触发器和存储过程:提升数据库功能
视图、触发器和存储过程:提升数据库功能
19 1
|
1月前
|
算法 Java 定位技术
【数据结构与算法】递归、回溯、八皇后 一文打尽!
【数据结构与算法】递归、回溯、八皇后 一文打尽!
|
1月前
|
存储 算法 C语言
【数据结构与算法】【约瑟夫问题】还在用递归?教你用链表秒杀约瑟夫
【数据结构与算法】【约瑟夫问题】还在用递归?教你用链表秒杀约瑟夫