GetReparentedValue (Motore di database)

Si applica a:SQL Server database SQL di Azure Istanza gestita di SQL di Azure

Restituisce un nodo il cui percorso dalla radice è il percorso di newRoot, seguito dal percorso da oldRoot.

Sintassi

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

Nota

Per visualizzare la sintassi Transact-SQL per SQL Server 2014 (12.x) e versioni precedenti, vedere la documentazione delle versioni precedenti.

Argomenti

oldRoot
Valore hierarchyid del nodo che rappresenta il livello della gerarchia da modificare.

newRoot
hierarchyid che rappresenta il nodo. Sostituire la sezione oldRoot del nodo corrente per spostare il nodo.

Tipi restituiti

Tipo SQL Server restituito: hierarchyid

Tipo CLR restituito: SqlHierarchyId

Osservazioni:

Consente di modificare l'albero spostando nodi da oldRoot a newRoot. GetReparentedValue può essere usato per spostare un nodo di una gerarchia in un nuovo percorso della gerarchia. Il tipo di dati hierarchyid rappresenta la struttura gerarchica, ma non la applica. Gli utenti devono verificare che hierarchyid sia strutturato in modo appropriato per il nuovo percorso. Un indice univoco applicato al tipo di dati hierarchyid può impedire la presenza di voci duplicate. Per un esempio di spostamento di un sottoalbero intero, vedere Dati gerarchici (SQL Server).

Esempi

R. Confronto tra due percorsi di nodi

Nell'esempio seguente viene illustrato il valore hierarchyid corrente di un nodo. Viene anche visualizzato il valore hierarchyid del nodo, nel caso in cui quest'ultimo venga spostato e diventi un discendente del nodo @NewParent. Per visualizzare le relazioni gerarchiche, viene utilizzato il metodo ToString().

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. Aggiornamento di un nodo in un nuovo percorso

Nell'esempio seguente viene utilizzato GetReparentedValue() in un'istruzione UPDATE per spostare un nodo da un percorso obsoleto in un nuovo percorso nella gerarchia:

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. Esempio CLR

Nel frammento di codice seguente viene chiamato il metodo GetReparentedValue ():

this. GetReparentedValue(oldParent, newParent)  

Vedi anche

Guida di riferimento ai metodi per il tipo di dati hierarchyid
Dati gerarchici (SQL Server)
hierarchyid (Transact-SQL)