Compartir vía


GetAncestor (motor de base de datos)

se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL Database en Microsoft Fabric

Devuelve un objeto hierarchyid que representa el antepasado número de this.

Sintaxis

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

Argumentos

n
Un tipo int, que representa el número de niveles que subir en la jerarquía.

Tipos de valores devueltos

Tipo de valor devuelto de SQL Server: hierarchyid

Tipo devuelto de CLR: SqlHierarchyId

Observaciones

Se usa para probar si cada nodo de la salida tiene el nodo actual como antecesor en el nivel especificado.

Si se pasa un número mayor que GetLevel(), se devuelve NULL.

Si se pasa un número negativo, se produce una excepción.

Ejemplos

A. Encontrar los nodos secundarios de un elemento primario

GetAncestor(1) devuelve los empleados que tienen david0 como su antecesor inmediato (su elemento primario). En el ejemplo siguiente se utiliza 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. Devolución de los elementos descendientes del secundario de un elemento primario

GetAncestor(2) devuelve los empleados que están dos niveles por debajo en la jerarquía del nodo actual. Estos empleados son los subelementos secundarios del nodo actual. En el ejemplo siguiente se utiliza 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. Devolución de la fila actual

Ejecute el siguiente código para devolver el nodo actual usando 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. Devolución de un nivel de jerarquía si una tabla no está presente

GetAncestor devuelve el nivel seleccionado en la jerarquía, incluso si una tabla no está presente. Por ejemplo, el código siguiente designa a un empleado actual y devuelve el identificador hierarchyid del antecesor del empleado actual sin hacer referencia a una tabla.

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

E. Llamada de un método del Common Language Runtime

En el fragmento de código siguiente se llama al método GetAncestor().

this.GetAncestor(1)  

Consulte también

IsDescendantOf (motor de base de datos)
Referencia de los métodos del tipo de datos hierarchyid
Datos jerárquicos (SQL Server)
hierarchyid (Transact-SQL)