共用方式為


GetAncestor (Database Engine)

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體

傳回 hierarchyid,代表 this 的第 n 個上階。

Syntax

-- Transact-SQL syntax  
child.GetAncestor ( n )   
-- CLR syntax  
SqlHierarchyId GetAncestor ( int n )  

注意

若要檢視 SQL Server 2014 (12.x) 和舊版的 Transact-SQL 語法,請參閱 舊版檔

引數

n
int,代表要在階層中向上移動的層級數目。

傳回類型

SQL Server 傳回型別:hierarchyid

CLR 傳回型別:SqlHierarchyId

備註

用來測試輸出中的每個節點是否都具有目前的節點當做位於指定之層級的上階。

如果傳遞大於 GetLevel() 的數字,就會傳回 NULL。

如果傳遞了負數,則會引發例外狀況。

範例

A. 尋找父系的子節點

GetAncestor(1) 會傳回具有 david0 當做其直接上階 (其父系) 的員工。 下列範例會使用 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. 傳回父系的孫系

GetAncestor(2) 會傳回在階層中位於目前節點下面兩個層級的員工。 這些員工就是目前節點的孫系。 下列範例會使用 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. 傳回目前的資料列

若要使用 GetAncestor(0) 來傳回目前的節點,請執行下列程式碼。

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. 如果資料表不存在,便傳回階層層級

GetAncestor 會傳回階層中的選取層級,即使資料表不存在也一樣。 例如,下列程式碼會指定目前的員工,並傳回目前員工上階的 hierarchyid,而不是沒有資料表的參考。

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

E. 呼叫 Common Language Runtime 方法

下列程式碼片段會呼叫 GetAncestor() 方法。

this.GetAncestor(1)  

另請參閱

IsDescendantOf (Database Engine)
Hierarchyid 資料類型方法參考
階層式資料 (SQL Server)
hierarchyid (Transact-SQL)