SQL刪除無限極分類的存儲過程
SQL中的存儲過程非常重要,下面就將為您介紹SQL中刪除無限極分類的存儲過程,供您參考,希望對您能夠有所幫助。
01 CREATE PROCEDURE [dbo].[Category_Delete]
02 @CategoryId int
03 AS
04 --DELETE [Category]
05 -- WHERE CategoryId=@CategoryId
06
07 --DELETE [Category]
08 -- WHERE FatherId=@CategoryId
09
10 declare @taba TABLE([tabid] [int] NOT NULL)
11 insert @taba (tabid)
12 select CategoryId from Category WHERE FatherId=@CategoryId
13 declare @id int
14 while(exists(select top 1 * from @taba))--只要還有數據就繼續循環
15 begin #p#
16 select top 1 @id=tabid from @taba--從變量表中取出一條記錄
17 insert @taba (tabid)--插入父ID等于@id這條記錄的子記錄
18 select CategoryId from Category WHERE FatherId=@id
19 delete from Category where CategoryId=@id--從原表中刪除該記錄
20 delete from @taba where tabid=@id--從變量表中刪除該記錄,因為已取到它的所有子記錄不必要了
21 end
22 DELETE [Category]
23 WHERE CategoryId=@CategoryId
24 ---這段可以適應無限級分類表
表設計: