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ı)