Share via


GetReparentedValue (moteur de base de données)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Retourne un nœud dont le chemin depuis la racine est celui qui pointe vers newRoot, suivi du chemin à partir de oldRoot.

Syntaxe

-- Transact-SQL syntax  
node. GetReparentedValue ( oldRoot, newRoot )  
-- CLR syntax  
SqlHierarchyId GetReparentedValue ( SqlHierarchyId oldRoot , SqlHierarchyId newRoot )  

Remarque

Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 (12.x) et versions antérieures, consultez la Documentation sur les versions antérieures.

Arguments

oldRoot
hierarchyid qui est le nœud représentant le niveau de la hiérarchie à modifier.

newRoot
Type hierarchyid qui représente le nœud. Remplacez la section oldRoot du nœud actuel pour déplacer le nœud.

Types de retour

Type de retour SQL Server : hierarchyid

Type de retour CLR : SqlHierarchyId

Remarques

Utilisé pour modifier l’arborescence en déplaçant des nœuds de oldRoot vers newRoot. GetReparentedValue est utilisé pour déplacer un nœud de 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

R. 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 type hierarchyid du nœud si vous déplaciez le nœud pour en faire 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)  

Voir aussi

Référence de méthodes de type de données hierarchyid
Données hiérarchiques (SQL Server)
hierarchyid (Transact-SQL)