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)
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: nel corso del 2024 verranno dismessi i problemi di GitHub come meccanismo di feedback per il contenuto e verranno sostituiti con un nuovo sistema di feedback. Per altre informazioni, vedere:Invia e visualizza il feedback per