项目进行中的小问题-0427

区域表中有如下字段:ID,Name,ParentID。要求,当删除ID为某一值的数据时,同时删除其所有的下级数据。存储过程如下:

 1 CREATE PROCEDURE [dbo].[pro_AreaDelete] 
 2     @areaid int
 3 AS
 4 begin
 5     set nocount on
 6     declare @childID int--声明变量
 7    declare cursors cursor local for select AreaID from lh_Area where ParentID=@areaid--local关键字 全局游标
 8    open cursors
 9     fetch next from cursors into @childID--取游标的值赋给变量
10    while(@@FETCH_STATUS=0)--判断当前游标内是否存在值
11    begin 
12         exec pro_AreaDelete @childID--递归调用存储过程 把孩子节点的值赋给游标 递归调用
13       fetch next from cursors into @childID--继续读取游标里面的内容
14     end  
15      close cursors
16      deallocate cursors
17      delete from lh_Area where AreaID=@areaid--存储过程执行的删除方法
18     set nocount off
19 end
20 
21 GO

 

 

posted @ 2013-04-27 21:21  马小白  阅读(287)  评论(4编辑  收藏  举报