Поделиться через


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)