GetAncestor (moteur de base de données)
S’applique à :SQL ServerAzure SQL DatabaseAzure 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.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour