asp.net制作多级联动如何编写sql删除

表结构是这样的。如果制作多级的删除啊。删除父类把它下面的分类(子类,子子类,子子子类)。删除。ALTERPROCEDURE[dbo].[Zy_Category_Delet... 表结构是这样的。如果制作多级的删除啊。
删除父类把它下面的分类(子类,子子类,子子子类)。删除。

ALTER PROCEDURE [dbo].[Zy_Category_Delete]
@CategoryId int
AS
DELETE [Category]
WHERE CategoryId=@CategoryId

DELETE [Category]
WHERE FatherId=@CategoryId

这样只能删除2级的。如果多级的呢?
怎么写
展开
 我来答
gis0123
2010-07-22 · TA获得超过462个赞
知道小有建树答主
回答量:364
采纳率:0%
帮助的人:125万
展开全部
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
---这段可以适应无限级分类表
方运龙
2010-07-22
知道答主
回答量:43
采纳率:0%
帮助的人:29.5万
展开全部
你这个到底有几级啊,可以用嵌套SQL语句啊,下面是两级实例

@CategoryId int
AS
DELETE [Category]
WHERE CategoryId IN ( SELECT CategoryId FROM Category WHERE FatherId = @CategoryId )
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式