Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Retourne un nœud dont le chemin d'accès depuis la racine est le chemin d'accès à newRoot, suivi du chemin entre oldRoot et ce nœud (this).
Syntaxe
-- Transact-SQL syntax
node. GetReparentedValue ( oldRoot, newRoot )
-- CLR syntax
SqlHierarchyId GetReparentedValue ( SqlHierarchyId oldRoot , SqlHierarchyId newRoot )
Arguments
oldRoot
hierarchyid qui est le nœud représentant le niveau de la hiérarchie à modifier.newRoot
hierarchyid représentant le nœud qui remplacera la section oldRoot du nœud actuel afin de le déplacer.
Types de retour
Type de retour SQL Server : hierarchyid
Type de retour CLR : SqlHierarchyId
Notes
Peut être utilisé pour modifier l'arborescence en déplaçant des nœuds d'oldRoot vers newRoot. GetReparentedValue peut être utilisé pour déplacer un nœud d'une hiérarchie vers un nouvel emplacement de la hiérarchie. Le type de données hierarchyid représente, mais n'applique pas la structure hiérarchique. Les utilisateurs doivent s'assurer que la structure hierarchyid convient au nouvel emplacement. Un index unique sur le type de données hierarchyid peut éviter la duplication des entrées. Pour obtenir un exemple de déplacement d'une sous-arborescence entière, consultez Données hiérarchiques (SQL Server).
Exemples
A.Comparaison de deux emplacements de nœuds
L'exemple suivant montre le hierarchyid actuel d'un nœud. Il montre également ce que serait le hierarchyid du nœud si le nœud était déplacé pour devenir un descendant du nœud @NewParent. Il utilise la méthode ToString() pour afficher les relations hiérarchiques.
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.Mise à jour d'un nœud à un nouvel emplacement
L'exemple suivant utilise GetReparentedValue() dans une instruction UPDATE pour déplacer un nœud d'un emplacement à un autre dans la hiérarchie :
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.Exemple CLR
L'extrait de code suivant appelle la méthode GetReparentedValue () :
this. GetReparentedValue(oldParent, newParent)