SQL Server: Como obter todos os registros filhos com um ID pai em uma tabela de referência própria

Oi eu tenho uma tabela que faz referência a si mesmo e eu preciso ser capaz de selecionar o pai e todos os seus registros filho de um determinado ID pai.

Minha tabela é a seguinte:

ID   | ParentID | Name         
-----------------------              
1      NULL       A
2      1          B-1
3      1          B-2
4      2          C-1
5      2          C-2

Portanto, para o exemplo acima, gostaria de poder passar um valor de 1 e obter todos os registros acima.

Até agora, eu criei a seguinte função com valor de tabela recursiva, mas ela não está se comportando como esperado (retornando apenas o primeiro registro).

CREATE FUNCTION [dbo].[SelectBranches]
(   
    @id INT
    ,@parentId INT
)
RETURNS @branchTable TABLE
(
    ID INT
    ,ParentID INT
    ,Name INT
)
AS
BEGIN 

    IF @branchId IS NOT NULL BEGIN

        INSERT INTO @branchTable
        SELECT 
            ID
            ,ParentID
            ,Name
        FROM
            tblLinkAdvertiserCity
        WHERE
            ID = @id

    END

    INSERT INTO @branchTable
    SELECT
        br.ID
        ,br.ParentID
        ,br.Name
    FROM
        @branchTable b
    CROSS APPLY
        dbo.SelectBranches(NULL, b.ParentID) br

    RETURN
END
GO

questionAnswers(3)

yourAnswerToTheQuestion