GetReparentedValue (motor de base de datos)
se aplica a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL Database en Microsoft Fabric
Devuelve un nodo cuya ruta de acceso desde la raíz es la que va a newRoot, seguida de la ruta de acceso desde oldRoot.
Sintaxis
-- Transact-SQL syntax
node. GetReparentedValue ( oldRoot, newRoot )
-- CLR syntax
SqlHierarchyId GetReparentedValue ( SqlHierarchyId oldRoot , SqlHierarchyId newRoot )
Argumentos
oldRoot
hierarchyid que es el nodo que representa el nivel de la jerarquía que se va a modificar.
newRoot
hierarchyid que representa el nodo. Reemplace la sección oldRoot del nodo actual para mover el nodo.
Tipos de valor devuelto
Tipo de valor devuelto de SQL Server: hierarchyid
Tipo devuelto de CLR: SqlHierarchyId
Observaciones
Se usa para modificar el árbol, de forma que los nodos se mueven de oldRoot a newRoot. GetReparentedValue se usa para mover un nodo de la jerarquía a una nueva ubicación de la jerarquía. El tipo de datos hierarchyid representa la estructura jerárquica, pero no la exige. Los usuarios deben asegurarse de que el identificador hierarchyid se estructura de forma apropiada para la nueva ubicación. Un índice único en el tipo de datos hierarchyid puede ayudar a evitar las entradas duplicadas. Para obtener un ejemplo de cómo mover un subárbol completo, consulte Datos jerárquicos (SQL Server).
Ejemplos
A. Comparar dos ubicaciones de nodo
En el ejemplo siguiente se muestra el identificador hierarchyid actual de un nodo. También se muestra cuál sería el valor de hierarchyid del nodo si este se moviera para convertirse en descendiente del nodo @NewParent. Utiliza el método ToString()
para mostrar las relaciones jerárquicas.
DECLARE @SubjectEmployee hierarchyid , @OldParent hierarchyid, @NewParent hierarchyid
SELECT @SubjectEmployee = OrgNode FROM HumanResources.EmployeeDemo
WHERE LoginID = 'adventure-works\gail0' ;
SELECT @OldParent = OrgNode FROM HumanResources.EmployeeDemo
WHERE LoginID = 'adventure-works\roberto0' ; -- who is /1/1/
SELECT @NewParent = OrgNode FROM HumanResources.EmployeeDemo
WHERE LoginID = 'adventure-works\wanida0' ; -- who is /2/3/
SELECT OrgNode.ToString() AS Current_OrgNode_AS_Text,
(@SubjectEmployee. GetReparentedValue(@OldParent, @NewParent) ).ToString() AS Proposed_OrgNode_AS_Text,
OrgNode AS Current_OrgNode,
@SubjectEmployee. GetReparentedValue(@OldParent, @NewParent) AS Proposed_OrgNode,
*
FROM HumanResources.EmployeeDemo
WHERE OrgNode = @SubjectEmployee ;
GO
B. Actualizar un nodo a una ubicación nueva
En el ejemplo siguiente se utiliza GetReparentedValue()
en una instrucción UPDATE para mover un nodo de una ubicación anterior a una ubicación nueva en la jerarquía:
DECLARE @SubjectEmployee hierarchyid , @OldParent hierarchyid, @NewParent hierarchyid
SELECT @SubjectEmployee = OrgNode FROM HumanResources.EmployeeDemo
WHERE LoginID = 'adventure-works\gail0' ; -- Node /1/1/2/
SELECT @OldParent = OrgNode FROM HumanResources.EmployeeDemo
WHERE LoginID = 'adventure-works\roberto0' ; -- Node /1/1/
SELECT @NewParent = OrgNode FROM HumanResources.EmployeeDemo
WHERE LoginID = 'adventure-works\wanida0' ; -- Node /2/3/
UPDATE HumanResources.EmployeeDemo
SET OrgNode = @SubjectEmployee. GetReparentedValue(@OldParent, @NewParent)
WHERE OrgNode = @SubjectEmployee ;
SELECT OrgNode.ToString() AS Current_OrgNode_AS_Text,
*
FROM HumanResources.EmployeeDemo
WHERE LoginID = 'adventure-works\gail0' ; -- Now node /2/3/2/
C. Ejemplo de CLR
En el siguiente fragmento de código se llama al método GetReparentedValue():
this. GetReparentedValue(oldParent, newParent)
Consulte también
Referencia de los métodos del tipo de datos hierarchyid
Datos jerárquicos (SQL Server)
hierarchyid (Transact-SQL)