删除无限极分类的sql存储过程(转)
CREATE PROCEDURE [dbo].[Category_Delete]@CategoryId intAS--DELETE [Category]-- WHERE CategoryId=@CategoryId--DELETE [Category]-- WHERE FatherId=@CategoryIddeclare @taba TABLE([tabid] [int] NOT NULL)insert @taba (tabid)select CategoryId from Category WHERE FatherId=@CategoryIddeclare @id intwhile(exists(select top 1 * from @taba))--只要还有数据就继续循环beginselect top 1 @id=tabid from @taba--从变量表中取出一条记录insert @taba (tabid)--插入父ID等于@id这条记录的子记录select CategoryId from Category WHERE FatherId=@iddelete from Category where CategoryId=@id--从原表中删除该记录delete from @taba where tabid=@id--从变量表中删除该记录,因为已取到它的所有子记录不必要了endDELETE [Category]WHERE CategoryId=@CategoryId
浙公网安备 33010602011771号