删除无限极分类的sql存储过程

孤街浪徒 提交于 2019-12-25 18:58:55
CREATE PROCEDURE [dbo].[Category_Delete]
@CategoryId int
AS
--DELETE [Category]
-- WHERE CategoryId=@CategoryId
 
--DELETE [Category]
-- WHERE FatherId=@CategoryId
 
declare @taba TABLE([tabid] [int] NOT NULL)
insert @taba (tabid)
select CategoryId from Category WHERE FatherId=@CategoryId
declare @id int
while(exists(select top 1 * from @taba))--只要还有数据就继续循环
begin
select top 1 @id=tabid from @taba--从变量表中取出一条记录
insert @taba (tabid)--插入父ID等于@id这条记录的子记录
select CategoryId from Category WHERE FatherId=@id
delete from Category where CategoryId=@id--从原表中删除该记录
delete from @taba where tabid=@id--从变量表中删除该记录,因为已取到它的所有子记录不必要了
end
DELETE [Category]
WHERE CategoryId=@CategoryId
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!