GetAncestor (aparat bazy danych)
Zwraca hierarchyid reprezentujących nth element nadrzędny z to.
Składnia
-- Transact-SQL syntax
child.GetAncestor ( n )
-- CLR syntax
SqlHierarchyId GetAncestor ( int n )
Argumenty
- n
int, Reprezentujących liczbę poziomów Przejdź w górę w hierarchii.
Zwracane typy
**SQL Zwracany typ serwera:**hierarchyid
**Zwracany typ CLR:**SqlHierarchyId
Uwagi
Używane, aby sprawdzić, czy każdy węzeł w danych wyjściowych ma bieżący węzeł jako element nadrzędny na określonym poziom.
Jeśli liczba większa od GetLevel() jest przekazywana, zostanie zwrócona wartość NULL.
Jeżeli nie przekazano liczbę ujemną, wyjątek.
Przykłady
A.Znajdowanie węzły podrzędność obiektu nadrzędnego
GetAncestor(1)Zwraca pracowników, które david0 jako ich bezpośredniego element nadrzędny (macierzysty).W poniższym przykładzie użyto 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.Zwracanie grandchildren obiektu nadrzędnego
GetAncestor(2)Zwraca pracowników, którzy są dwa poziomy niedziałający hierarchii z bieżącego węzła.Są to grandchildren bieżącego węzła.W poniższym przykładzie użyto 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.Zwracanie bieżącego wiersza.
Aby przywrócić bieżący węzeł przy użyciu GetAncestor(0), wykonać następującego kodu.
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.Zwracanie hierarchii poziom , jeśli tabela nie istnieje
GetAncestorZwraca wybrany poziom w hierarchii, nawet jeśli tabela nie jest obecny.Na przykład poniższy kod wyznacza bieżącego pracownika i zwraca hierarchyid z element nadrzędny bieżącego pracownika bez odwołania do tabela.
DECLARE @CurrentEmployee hierarchyid ;
DECLARE @TargetEmployee hierarchyid ;
SELECT @CurrentEmployee = '/2/3/1.2/5/3/' ;
SELECT @TargetEmployee = @CurrentEmployee.GetAncestor(2) ;
SELECT @TargetEmployee.ToString(), @TargetEmployee ;
E.Wywołanie wspólne środowiska wykonawczego języka metoda
Następujący kod wywoła urywek GetAncestor() metoda.
this.GetAncestor(1)