Share via


GetAncestor (veritabanı altyapısı)

Döner bir hierarchyidtemsil eden nth atası this.

Sözdizimi

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

-- CLR syntax
SqlHierarchyId GetAncestor ( int n )

Bağımsız değişkenler

  • n
    Bir int, hiyerarşi içinde gitmek için düzey sayısını gösteren.

Dönüş Türleri

SQL Server döndürme türü: hierarchyid

clr döndürme türü: SqlHierarchyId

Açıklamalar

Çıktıyı her düğüm bir atası belirtilen düzeyinde geçerli düğüm olup sınamak için kullanılır.

Bir sayıyı, daha büyük GetLevel() ise geçti, null döndürdü.

Negatif bir sayı aktarılırsa, bir özel durum oluşturuldu.

Örnekler

A.Alt düğümler üst bulma

GetAncestor(1)çalışanların sahip döner david0olarak onların hemen öncül (üst). Aşağıdaki örnek 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 ;

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.Bir üst grandchildren döndürme

GetAncestor(2)Geçerli düğüm hiyerarşisinden aşağı iki düzeyde olan çalışanlar döndürür. Geçerli düğüm torunları bunlar. Aşağıdaki örnek 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 ;

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.Geçerli satır döndüren

Kullanarak geçerli düğümün döndürmeye GetAncestor(0), aşağıdaki kodu yürütün.

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 ;

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.Tablo yoksa, hiyerarşi düzeyini döndürme

GetAncestorbir tablo mevcut değilse bile seçilen düzeyi hiyerarşisinde döndürür. Örneğin aşağıdaki kodu geçerli çalışan atar ve döner hierarchyidbir tabloya başvuru olmadan geçerli çalışanın atası.

DECLARE @CurrentEmployee hierarchyid ;
DECLARE @TargetEmployee hierarchyid ;
SELECT @CurrentEmployee = '/2/3/1.2/5/3/' ;
SELECT @TargetEmployee = @CurrentEmployee.GetAncestor(2) ;
SELECT @TargetEmployee.ToString(), @TargetEmployee ;

DECLARE @CurrentEmployee hierarchyid ;
DECLARE @TargetEmployee hierarchyid ;
SELECT @CurrentEmployee = '/2/3/1.2/5/3/' ;
SELECT @TargetEmployee = @CurrentEmployee.GetAncestor(2) ;
SELECT @TargetEmployee.ToString(), @TargetEmployee ;

E.Bir ortak dil çalışma zamanı yöntemi çağırma

Aşağıdaki kod parçacığını aramalar GetAncestor()yöntemi.

this.GetAncestor(1)

this.GetAncestor(1)

Ayrıca bkz.

Başvuru

IsDescendantOf (veritabanı altyapısı)

hierarchyid (Transact-sql)

Kavramlar

hierarchyid veri türü yöntemi başvurusu

Hiyerarşik veri (SQL Server)