DECLARE @EmpID AS int, @lvl_limit AS int;
SET @EmpID = 109;
SET @lvl_limit = 3;
WITH EmpCTE(EmpID, FirstName, LastName, MgrID, Lvl)
AS
( SELECT EmployeeID, FirstName, LastName, ManagerID, 0
FROM HumanResources.Employee AS E
JOIN Person.Contact AS C
ON C.ContactID = E.ContactID
WHERE EmployeeID = @EmpID
UNION ALL
SELECT E.EmployeeID, C.FirstName, C.LastName, E.ManagerID, Lvl + 1
FROM HumanResources.Employee AS E
JOIN Person.Contact AS C
ON C.ContactID = E.ContactID
JOIN EmpCTE AS M
ON E.ManagerID = M.EmpID
WHERE lvl < @lvl_limit )
SELECT * FROM EmpCTE;