SQL无级分类递归删除子类

 1 CREATE   PROCEDURE  USP_CatalogDeleteChild
 2
 3      @catalogid   nvarchar ( 50 )
 4 )
 5 AS
 6 SET  NOCOUNT  ON
 7
 8 DECLARE   @childCatalogId   nvarchar ( 50 )
 9 DECLARE   @loop   int
10 DECLARE   @totalrow   int
11
12 DELETE   FROM  cms_catalog  WHERE   [ id ]   =    @catalogid
13 BEGIN
14      -- --------递归,使用临时表
15      SELECT [ id ] , identity ( int AS  i  INTO  #tmp  FROM  cms_catalog  WHERE  parentid  =   @catalogid     
16      SET   @totalrow   =   @@rowcount
17      SET   @loop   = 1
18     
19      WHILE ( @loop   <=   @totalrow )
20      begin     
21          SELECT   @childCatalogId   =   [ id ]   FROM  #tmp  WHERE  i  =   @loop
22          SET   @loop   =   @loop + 1
23          EXEC  USP_CatalogDeleteChild  @childCatalogId         
24      end
25 END
26 GO
27

你可能感兴趣的:(sql)