Udostępnij przez


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)