思考命运

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
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
posted on 2012-08-15 15:13  思考命运  阅读(457)  评论(0编辑  收藏  举报