Compartir a través de


IsDescendantOf (motor de base de datos)

Devuelve true si this es descendiente del elemento primario.

Sintaxis

-- Transact-SQL syntax
child.IsDescendantOf ( parent )

-- CLR syntax
SqlHierarchyId IsDescendantOf ( SqlHierarchyId parent )

Argumentos

  • parent
    Nodo hierarchyid para el que se debe realizar la prueba de IsDescendantOf.

Tipos de valores devueltos

**Tipo de valor devuelto de SQL Server:**bit

**Tipo de valor devuelto de CLR:**SqlBoolean

Notas

Devuelve true para todos los nodos del subárbol con la raíz en el elemento primario y false para todos los demás nodos.

El elemento primario se considera su propio descendiente.

Ejemplos

A. Usar IsDescendantOf en una cláusula WHERE

El ejemplo siguiente devuelve un administrador y los empleados que dependen de él:

DECLARE @Manager hierarchyid
SELECT @Manager = OrgNode FROM HumanResources.EmployeeDemo
  WHERE LoginID = 'adventure-works\dylan0'

SELECT * FROM HumanResources.EmployeeDemo
WHERE @OrgNode.IsDescendantOf(Manager) = 1

B. Usar IsDescendantOf para evaluar una relación

En el código siguiente se declaran y rellenan tres variables. A continuación se evalúa la relación jerárquica y se devuelve uno de dos resultados impresos según la comparación:

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

C. Llamar a un método de Common Language Runtime

En el fragmento de código siguiente se llama al método IsDescendantOf().

this.IsDescendantOf(Parent)