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)