IsDescendantOf (компонент Database Engine)
Возвращает значение true, если объект this является потомком объекта parent.
Синтаксис
-- Transact-SQL syntax
child.IsDescendantOf ( parent )
-- CLR syntax
SqlHierarchyId IsDescendantOf (SqlHierarchyId parent )
Аргументы
- parent
Узел hierarchyid, для которого необходимо выполнить тест IsDescendantOf.
Типы возвращаемых данных
**Возвращаемый тип данных SQL Server:**bit
**Возвращаемый тип данных CLR:**SqlBoolean
Замечания
Возвращает значение true для всех узлов поддерева, корнем для которых является родительский элемент, и значение false для всех остальных узлов.
Родительский элемент считается своим собственным потомком.
Примеры
А. Использование функции IsDescendantOf в предложении WHERE
В следующем примере возвращается имя руководителя и имена подотчетных ему сотрудников:
DECLARE @Manager hierarchyid
SELECT @Manager = OrgNode FROM HumanResources.EmployeeDemo
WHERE LoginID = 'adventure-works\dylan0'
SELECT * FROM HumanResources.EmployeeDemo
WHERE OrgNode.IsDescendantOf(@Manager) = 1
Б. Использование функции IsDescendantOf для оценки связи
В следующем фрагменте кода объявляются и заполняются три переменные. Затем оценивается иерархическая связь и возвращается один из двух печатаемых результатов на основе сравнения:
DECLARE @Manager hierarchyid, @Employee hierarchyid, @LoginID nvarchar(256)
SELECT @Manager = OrgNode FROM HumanResources.EmployeeDemo
WHERE LoginID = 'adventure-works\terri0' ;
SELECT @Employee = OrgNode, @LoginID = LoginID FROM HumanResources.EmployeeDemo
WHERE LoginID = 'adventure-works\rob0'
IF @Employee.IsDescendantOf(@Manager) = 1
BEGIN
PRINT 'LoginID ' + @LoginID + ' is a subordinate of the selected Manager.'
END
ELSE
BEGIN
PRINT 'LoginID ' + @LoginID + ' is not a subordinate of the selected Manager.' ;
END
В. Вызов метода CLR
В следующем фрагменте кода вызывается метод IsDescendantOf().
this.IsDescendantOf(Parent)