Stored procedures 获取sql中递归表的子项

Stored procedures 获取sql中递归表的子项,stored-procedures,sql-server-2012,recursive-query,hierarchical-query,Stored Procedures,Sql Server 2012,Recursive Query,Hierarchical Query,我有一个具有某些级别(最多5个级别)的表,如下所示。我想创建一个过程,获取一些id并返回项目及其子项。。。我不知道该怎么办! (当refid为1时,表示该节点是第一级中的父节点) 您的refid在表中不存在。@HamletHakobyan抱歉,我忘了提及它。我更新了问题。或 DECLARE @Table TABLE( ID INT, ParentID INT, NAME VARCHAR(20) ) INSERT INTO @Table (ID,ParentID,

我有一个具有某些级别(最多5个级别)的表,如下所示。我想创建一个过程,获取一些id并返回项目及其子项。。。我不知道该怎么办! (当refid为1时,表示该节点是第一级中的父节点)


您的refid在表中不存在。@HamletHakobyan抱歉,我忘了提及它。我更新了问题。或
    DECLARE @Table TABLE(
    ID INT,
    ParentID INT,
    NAME VARCHAR(20)
)

INSERT INTO @Table (ID,ParentID,[NAME]) SELECT 1, NULL, 'A'
INSERT INTO @Table (ID,ParentID,[NAME]) SELECT 2, 1, 'B-1'
INSERT INTO @Table (ID,ParentID,[NAME]) SELECT 3, 1, 'B-2'
INSERT INTO @Table (ID,ParentID,[NAME]) SELECT 4, 2, 'C-1'
INSERT INTO @Table (ID,ParentID,[NAME]) SELECT 5, 2, 'C-2'


DECLARE @ID INT

SELECT @ID = 2

;WITH ret AS(
        SELECT  *
        FROM    @Table
        WHERE   ID = @ID
        UNION ALL
        SELECT  t.*
        FROM    @Table t INNER JOIN
                ret r ON t.ParentID = r.ID
)

SELECT  *
FROM    ret