Udostępnij za pośrednictwem


GetReparentedValue (aparat bazy danych)

Zwraca węzła, którego ścieżka z katalogu głównego jest ścieżka do newRoot, a po nim ścieżka z oldRoot z to.

Składnia

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

-- CLR syntax
SqlHierarchyId GetReparentedValue ( SqlHierarchyId oldRoot , SqlHierarchyId newRoot )

Argumenty

  • oldRoot
    A hierarchyid to jest węzeł, który reprezentuje poziom hierarchii, która ma zostać zmodyfikowana.

  • newRoot
    A hierarchyid reprezentująca węzeł, który zastąpi oldRoot sekcji bieżący węzeł, aby przenieść węzła.

Zwracane typy

**SQL Zwracany typ serwera:**hierarchyid

**Zwracany typ CLR:**SqlHierarchyId

Uwagi

Służy do modyfikowania drzewa przenosząc węzłów z oldRoot do newRoot.GetReparentedValue można przenieść do nowej lokalizacji w hierarchii węzeł hierarchii.hierarchyid Reprezentuje typ danych, ale nie wymusza hierarchiczną strukturę.Użytkownicy muszą zapewnić, że hierarchyid jest odpowiednio struktura nowej lokalizacji.indeks unikatowy na hierarchyid Typ danych można zapobiec zduplikowane wpisy.Zobacz przykład przenoszenie Całe poddrzewo Praca z hierarchyid danych.

Przykłady

A.Porównanie dwóch lokalizacjach węzła

Poniższy przykład pokazuje hierarchyid bieżącego węzła.Pokazuje także co hierarchyid węzła byłoby Jeśli węzeł zostały przeniesione do stać się elementem podrzędnym składnika @ newparent węzła.Używa on ToString() metoda do pokazywania relacji hierarchicznych.

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.Uaktualnianie węzła do nowej lokalizacji

W poniższym przykładzie użyto GetReparentedValue() w instrukcja UPDATE przenieść węzła z poprzedniej lokalizacji do nowej lokalizacji w hierarchii:

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.Przykład CLR

Następujący kod wywoła urywek GetReparentedValue (),metoda:

this. GetReparentedValue(oldParent, newParent)