GetAncestor (moteur de base de données)
S’applique à : SQL Server
Azure SQL Database
Azure SQL Managed Instance
Retourne un hierarchyid qui représente le nième ancêtre de this.
Syntaxe
-- Transact-SQL syntax
child.GetAncestor ( n )
-- CLR syntax
SqlHierarchyId GetAncestor ( int n )
Remarque
Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 (12.x) et versions antérieures, consultez la Documentation sur les versions antérieures.
Arguments
n
int représentant le nombre de niveaux à remonter dans la hiérarchie.
Types de retour
Type de retour SQL Server : hierarchyid
Type de retour CLR : SqlHierarchyId
Remarques
Utilisé pour tester si chaque nœud de la sortie a pour ancêtre le nœud actuel au niveau spécifié.
Si un nombre supérieur à GetLevel() est passé, la valeur Null est retournée.
Si un nombre négatif est passé, une exception est levée.
Exemples
R. Recherche des nœuds enfants d'un parent
GetAncestor(1)
retourne les employés qui ont david0
pour ancêtre immédiat (leur parent). L'exemple suivant utilise GetAncestor(1)
.
DECLARE @CurrentEmployee hierarchyid
SELECT @CurrentEmployee = OrgNode FROM HumanResources.EmployeeDemo
WHERE LoginID = 'adventure-works\david0'
SELECT OrgNode.ToString() AS Text_OrgNode, *
FROM HumanResources.EmployeeDemo
WHERE OrgNode.GetAncestor(1) = @CurrentEmployee ;
B. Retour des petits-enfants d'un parent
GetAncestor(2)
retourne les employés situés dans la hiérarchie deux niveaux en-dessous du nœud actuel. Ces employés sont les petits-enfants du nœud actuel. L'exemple suivant utilise GetAncestor(2)
.
DECLARE @CurrentEmployee hierarchyid
SELECT @CurrentEmployee = OrgNode FROM HumanResources.EmployeeDemo
WHERE LoginID = 'adventure-works\ken0'
SELECT OrgNode.ToString() AS Text_OrgNode, *
FROM HumanResources.EmployeeDemo
WHERE OrgNode.GetAncestor(2) = @CurrentEmployee ;
C. Retour de la ligne actuelle
Pour retourner le nœud actuel en utilisant GetAncestor(0)
, exécutez le code suivant.
DECLARE @CurrentEmployee hierarchyid
SELECT @CurrentEmployee = OrgNode FROM HumanResources.EmployeeDemo
WHERE LoginID = 'adventure-works\david0'
SELECT OrgNode.ToString() AS Text_OrgNode, *
FROM HumanResources.EmployeeDemo
WHERE OrgNode.GetAncestor(0) = @CurrentEmployee ;
D. Retour d’un niveau de la hiérarchie si une table n’est pas présente
GetAncestor
retourne le niveau sélectionné de la hiérarchie même si une table n’est pas présente. Par exemple, le code suivant désigne un employé actuel et retourne le hierarchyid
de l’ancêtre de l’employé actuel sans référence à une table.
DECLARE @CurrentEmployee hierarchyid ;
DECLARE @TargetEmployee hierarchyid ;
SELECT @CurrentEmployee = '/2/3/1.2/5/3/' ;
SELECT @TargetEmployee = @CurrentEmployee.GetAncestor(2) ;
SELECT @TargetEmployee.ToString(), @TargetEmployee ;
E. Appel d'une méthode CLR (Common Language Runtime)
L'extrait de code suivant appelle la méthode GetAncestor()
.
this.GetAncestor(1)
Voir aussi
IsDescendantOf (moteur de base de données)
Référence de méthodes de type de données hierarchyid
Données hiérarchiques (SQL Server)
hierarchyid (Transact-SQL)
Commentaires
https://aka.ms/ContentUserFeedback.
Prochainement : Tout au long de l'année 2024, nous supprimerons progressivement les GitHub Issues en tant que mécanisme de retour d'information pour le contenu et nous les remplacerons par un nouveau système de retour d'information. Pour plus d’informations, voir:Soumettre et afficher des commentaires pour