Udostępnij za pośrednictwem


GetAncestor (Database Engine)

Zwraca hierarchyid reprezentuje n th element nadrzędnyto.

-- Transact-SQL syntax
child.GetAncestor ( n ) 

-- CLR syntax
SqlHierarchyId GetAncestor ( int n )

Argumenty

  • n
    An int, representing the number of levels to go up in the hierarchy.

Zwracane typy

**Zwracany typ programu SQL Server:**hierarchyid

**Zwracany typ CLR:**SqlHierarchyId

Remarks

Służy do sprawdzenia, czy każdy węzeł w danych wyjściowych ma bieżący węzeł jako element nadrzędny w określonym poziom.

Jeśli liczba jest większa niż GetLevel() jest przekazywana, zwracana jest wartość NULL.

Jeżeli przekazano jest liczbą ujemną, jest spowodował wyjątek.

Przykłady

A.Znajdowanie podrzędność węzłów obiektu nadrzędnego

GetAncestor(1) Zwraca pracowników, którzy mają david0 jak ich bezpośredniego element nadrzędny (ich nadrzędnej). 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óre nie działają dwa poziomy w 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ć przy użyciu bieżącego węzła 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.Zwraca poziom hierarchii, jeśli tabela nie istnieje

GetAncestor Zwraca wybranym poziomie 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 dla 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ólnej metoda środowiska wykonawczego języka

Następujący kod wywołania fragment GetAncestor() Metoda.

this.GetAncestor(1)