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)