zoukankan      html  css  js  c++  java
  • TSQL存储过程:类别链提取

    提取类别链

    表结构:

    PCID,CategoryName,ParentID

    1      衬衫                0

    2      裤子                0

    3      长袖衬衫          1

    4      长袖条纹衬衫     3
     1set ANSI_NULLS ON
     2set QUOTED_IDENTIFIER ON
     3go
     4
     5/* 创建:***
     6*  时间:200*/
    0*/16
     7*  用途:获取从根结点到叶结点的类别链条
     8*/
     9CREATE PROCEDURE [dbo].[GetCategorys]
    10AS
    11DECLARE
    12@CACHE_PCID int,                            --缓存PCID
    13@OUT_STR nvarchar(500),                --输出的类别链条
    14@CACHE_PARENTID int,                     --缓存的父类别ID
    15@CACHE_CATENAME nvarchar(20)      --缓存的类别名字
    16BEGIN
    17--获取所有独立叶结点类别
    18---------------------------------------------------------------------------
    19DECLARE ENDPOINT_CURSOR CURSOR FOR
    20select C.PCID from
    21(
    22    select distinct PCID from w_ProductCategorys
    23) C
    24left outer join
    25(
    26--#PID带子类别的类别
    27select distinct B.ParentID from
    28(
    29    select PCID,ParentID from w_ProductCategorys
    30) A 
    31right outer join
    32(
    33    select PCID,ParentID from w_ProductCategorys
    34) B
    35on A.PCID=B.ParentID where A.PCID is not null
    36--#PID
    37) D
    38on C.PCID=D.ParentID where D.ParentID is null
    39---------------------------------------------------------------------------
    40--临时表
    41SELECT PCID,ParentID,CategoryName INTO #Temp_TAB FROM w_ProductCategorys
    42--打开游标
    43OPEN ENDPOINT_CURSOR;
    44
    45FETCH NEXT FROM ENDPOINT_CURSOR INTO @CACHE_PCID;
    46--游标循环
    47WHILE @@FETCH_STATUS=0
    48BEGIN
    49    --循环分析PCID、ParentID,获取类别链条
    50    --获取父类别
    51    SET @CACHE_PARENTID=(SELECT ParentID FROM #Temp_TAB);
    52    --获取叶结点类别名
    53    SET @OUT_STR=(SELECT CategoryName FROM #Temp_TAB WHERE PCID=@CACHE_PCID);
    54    --开始循环
    55    WHILE @CACHE_PARENTID!=0
    56    BEGIN        
    57        SET @CACHE_CATENAME=(SELECT CategoryName From #Temp_TAB WHERE PCID=@CACHE_PARENTID);
    58        SET @OUT_STR=@CACHE_CATENAME+'----'+@OUT_STR;
    59        SET @CACHE_PARENTID=(SELECT ParentID FROM #Temp_TAB WHERE PCID=@CACHE_PARENTID);
    60    END
    61    
    62    PRINT(@OUT_STR);
    63    SET @OUT_STR='';
    64    
    65    FETCH NEXT FROM ENDPOINT_CURSOR INTO @CACHE_PCID;
    66END
    67--关闭游标
    68CLOSE ENDPOINT_CURSOR;
    69DEALLOCATE ENDPOINT_CURSOR

    70END

  • 相关阅读:
    linux基础命令之一
    Chrome 控制台使用大全
    移动端效果 — 页面引入在线视频
    移动端——简单计分表单
    JS操作cookie
    移动端页面字体——rem的使用
    Highcharts 使用总结
    CSS水平居中
    python学习 day2
    python学习 day1
  • 原文地址:https://www.cnblogs.com/lixx/p/1248197.html
Copyright © 2011-2022 走看看