Compartir a través de


GetAncestor (motor de base de datos)

Devuelve un objeto hierarchyid que representa el antepasado número n 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 de valor devuelto de CLR: SqlHierarchyId

Comentarios

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. Éstos son los descendientes de los 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

Para devolver el nodo actual utilizando GetAncestor(0), ejecute el código siguiente.

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

Vea también

Referencia

IsDescendantOf (motor de base de datos)

hierarchyid (Transact-SQL)

Conceptos

Referencia de los métodos del tipo de datos hierarchyid

Datos jerárquicos (SQL Server)