Partager via


IsDescendantOf (moteur de base de données)

Retourne la valeur true si this est un descendant de parent.

Syntaxe

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

-- CLR syntax
SqlHierarchyId IsDescendantOf ( SqlHierarchyId parent )

Arguments

  • parent
    Nœud hierarchyid pour lequel le test IsDescendantOf doit être effectué.

Types de retour

Type de retour SQL Server : bit

Type de retour CLR : SqlBoolean

Notes

Retourne la valeur true pour tous les nœuds de la sous-arborescence dont la racine est le parent, et false pour tous les autres nœuds.

Le parent est considéré comme étant son propre descendant.

Exemples

A. Utilisation d'IsDescendantOf dans une clause WHERE

L'exemple suivant retourne un responsable et les employés qui travaillent sous ses ordres :

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

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

B. Utilisation d'IsDescendantOf pour évaluer une relation

Le code suivant déclare et remplit trois variables. Il évalue ensuite la relation hiérarchique et retourne l'un de deux résultats imprimés selon la comparaison :

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. Appel d'une méthode CLR (Common Language Runtime)

L'extrait de code suivant appelle la méthode IsDescendantOf().

this.IsDescendantOf(Parent)