Share via


GetReparentedValue (veritabanı altyapısı)

Olan yol kök yoludur bir düğüm işlevi için newRoot, yolu takip oldRootiçin this.

Sözdizimi

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

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

Bağımsız değişkenler

  • oldRoot
    A hierarchyidyani değiştirilecek hiyerarşi düzeyini gösteren düğümü.

  • newRoot
    A hierarchyidyerini alacak düğümü temsil eden oldRootbölümü düğüm taşımak için geçerli düğümün.

Dönüş Türleri

SQL Server döndürme türü: hierarchyid

clr döndürme türü: SqlHierarchyId

Açıklamalar

Ağaç düğümlerden taşıyarak değiştirmek için kullanılan oldRootiçin newRoot. GetReparentedValue bir düğüm bir hiyerarşi hiyerarşi içindeki yeni bir konuma taşımak için kullanılabilir. hierarchyidVeri türü gösterir ancak hiyerarşik yapısını zorlamaz. Kullanıcıların hierarchyid için yeni bir konum stoğunuzu emin olmanız gerekir. Benzersiz bir dizin hierarchyidveri türü yinelenen girişleri önlemek yardımcı olabilir. Tüm bir alt ağaç taşıma konusunda bir örnek için bkz: Hiyerarşik veri (SQL Server).

Örnekler

A.İki düğüm konum karşılaştırma

Aşağıdaki örnek, geçerli hierarchyid düğüm gösterir. Ayrıca ne gösterir hierarchyiddüğüm düğüm taşındı Eğer soyundan olmaya olacağını @ NewParent düğüm. O uses ToString()hiyerarşik ilişkileri göstermek için yöntem.

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

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.Yeni bir konuma bir düğüm güncelleştiriliyor

Aşağıdaki örnek GetReparentedValue()bir düğüm eski konumundan hiyerarşisinde yeni bir konuma taşımak için bir update deyimi içinde:

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/

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.clr örneği

Aşağıdaki kod parçacığını aramalar **GetReparentedValue ()**yöntemi:

this. GetReparentedValue(oldParent, newParent)

this. GetReparentedValue(oldParent, newParent)

Ayrıca bkz.

Başvuru

hierarchyid (Transact-sql)

Kavramlar

hierarchyid veri türü yöntemi başvurusu

Hiyerarşik veri (SQL Server)