GetAncestor (motor de base de datos)
se aplica a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL 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)